jtable drucken unter java 1.3

ARadauer

Grünschnabel
hallo, ich bin dabei eine jtable zu drucken und das unter der java version 1.3

ich verwende dazu diesen code, den ich glaube hier gefunden habe:

Code:
public class Printer implements Printable 
{ 
   public static final int PORTRAIT=PageFormat.PORTRAIT; 
   public static final int LANDSCAPE=PageFormat.LANDSCAPE; 
   public static final int REVERSE_LANDSCAPE=PageFormat.REVERSE_LANDSCAPE; 

   public static void print(final Component component, final int orientation){ 
             
      new Thread() 
      { 
         public void run(){ 
            try{          
               Printable printable=new Printer(component); 
                
               PrinterJob job=PrinterJob.getPrinterJob(); 
                
               PageFormat format=job.defaultPage(); 
               if(orientation>=0) format.setOrientation(orientation); 
               job.setPrintable(printable,format); 
                
               if(job.printDialog()){ 
                  component.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); 
                  job.print(); 
                  component.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); 
               } 
            } 
            catch (Exception e){ 
               System.err.println(e); 
            } 
         } 
      }.start();    
   } 

   private Component myComponent; 

   protected Printer(Component component){ 
      myComponent=component; 
   } 

   public int print(Graphics gr, PageFormat pageFormat, int pageIndex)   throws PrinterException   { 
      if(pageIndex!=0) return NO_SUCH_PAGE; 

      Graphics2D g=(Graphics2D)gr; 
      double x = pageFormat.getImageableX(); 
      double y = pageFormat.getImageableY(); 
      double w = pageFormat.getImageableWidth(); 
      double h = pageFormat.getImageableHeight(); 
       
       
      double cWidht = myComponent.getWidth(); 
      double cHeight = myComponent.getHeight(); 

       
      double sx= w/cWidht; 
      double sy= h/cHeight; 
          
      g.translate(x,y); 
      if(sy<sx){ 
         g.scale(sy, sy); 
      }else{ 
         g.scale(sx, sx); 
      } 

      myComponent.printAll(g); 
       

      return PAGE_EXISTS; 
   } 
}

irgendwie will das teil aber nicht so wie ich es hätte. wenn ich als component nur den jtabel übergebe, werden mir die header nicht gedruckt. drucke ich die ganze scroll pane, werden mir aber auch die scroll leisten gedruckt.

geb ich den table mit einem jlabel (in dem ich überschriften rein schreiben) in ein jpanel, wird mir nur eine leere fläche gedruckt, zeig ich nun das jpanel mit einem jframe an, wird mir nur der auf dem bildschirm sichtbare bereich gedruckt.

ich möchte einfach eine tabelle auf eine Seite ausdrucken, mit überschriften. kann mir irgendjemand helfen?
 
Zurück