2012-04-10 66 views
1

我有下面的方法创建一个JTable,然后通过其显示为一个矩形打印出来,而不是带有页眉和页脚的页面。JTable在打印时显示为框

public void printModules(){ 
    MessageFormat header = new MessageFormat("Modules " + new Date()); 
    MessageFormat footer = new MessageFormat("Created by Assignments Database"); 
    try { 
     JTable jtModules = new JTable(new ModulesTableModel(Controller.getInstance().getModules())); 
     jtModules.setShowHorizontalLines(true); 
     jtModules.setShowVerticalLines(true); 
     jtModules.setShowGrid(true); 

     boolean complete = jtModules.print(JTable.PrintMode.NORMAL, header, footer, true, null, false, null); 

     if(complete){ 
      System.out.println("Printed"); 
     } else{ 
      System.out.println("Printing Cancelled"); 
     } 
    } catch (PrinterException e) { 
     e.printStackTrace(); 
    } 
} 

还有什么不对?表格中的数据是由一个面板中显示的相同数据创建的。

在我的抽象表模型我已实现了以下方法:

  • 构造
  • getRowCount
  • getColumnCount
  • getValueAt
  • getColumnNames

是否有任何其他方法那需要成为crea特德?

+2

另请参阅很多乐趣[获取表格的图像](http://stackoverflow.com/q/7369814/418556)。 ;) – 2012-04-10 16:16:24

回答

2

在教程打印一些说明你需要以打印显示的表,所以将其添加到JFrame,然后frame.setVisible(true);然后frame.setVisible(false);
这将使它打印。