如何在Java应用程序中打印JTable对象

问题现在,一旦从数据库中获取数据并显示在scrollPane中嵌入的JTable对象“table”中,我们如何创建一个打印作业,以便能够在A3尺寸的纸张中打印所显示的表格?

我从数据库中获取数据的代码如下所示:

try { Class.forName("com.mysql.jdbc.Driver"); Connection con=DriverManager.getConnection("jdbc:mysql://localhost/newb","root","pass"); Statement stat=con.createStatement(); ResultSet res=stat.executeQuery("select * from table where name = '"+name+"'"); ResultSetMetaData rsmd = res.getMetaData(); int colcount = rsmd.getColumnCount(); Vector columns = new Vector(colcount); for(int i=3; i<=colcount; i++) { columns.add(rsmd.getColumnName(i)); } Vector data = new Vector(); Vector row; // Store row data while(res.next()) { row = new Vector(colcount); for(int i=3; i<=colcount; i++) { row.add(res.getString(i)); } data.add(row); } table = new JTable(data, columns); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); scrollPane.setViewportView(table); } catch(Exception ex) { System.out.println(ex); } 

我正在使用vector类从表中获取数据。 我们如何将显示的表格中显示的数据打印到纸张上?

只需使用JTable.print()方法。 这是一篇关于将JTable发送到打印机以及另一个具有更多参数的文章

您显然没有阅读上一个问题中提供的链接。

从如何使用表的打印部分

印花

JTable为打印表提供了一个简单的API。 打印表的最简单方法是调用不带参数的JTable.print:

 try { if (! table.print()) { System.err.println("User cancelled printing"); } } catch (java.awt.print.PrinterException e) { System.err.format("Cannot print %s%n", e.getMessage()); } 

在普通的Swing应用程序上调用print会打开一个标准的打印对话框。 (在无头应用程序中,只需打印表格。)返回值表示用户是继续打印作业还是取消打印作业。 JTable.print可以抛出java.awt.print.PrinterException,这是一个经过检查的exception; 这就是上面的例子使用try … catch的原因。

JTable提供了多种打印过载,具有各种选项。 TablePrintDemo.java中的以下代码显示了如何定义页眉:

MessageFormat header = new MessageFormat(“Page {0,number,integer}”);

 try { table.print(JTable.PrintMode.FIT_WIDTH, header, null); } catch (java.awt.print.PrinterException e) { System.err.format("Cannot print %s%n", e.getMessage()); } 

对于更复杂的打印应用程序,请使用JTable.getPrintable获取表的Printable对象。 有关可打印的更多信息,请参阅2D图形轨迹中的“打印”课程。

我希望帮助您使用此代码尝试如何在Java netbeans中打印JTable

  private void btn_printActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: MessageFormat header = new MessageFormat("Print Report"); MessageFormat footer = new MessageFormat("Page{0,number,integer}"); try { table_employee.print(JTable.PrintMode.FIT_WIDTH, header, footer); } catch (java.awt.print.PrinterAbortException e) { } catch (PrinterException ex) { Logger.getLogger(employee_info.class.getName()).log(Level.SEVERE, null, ex); } }