2

问题现在,一旦从数据库中获取数据并显示在嵌入在滚动窗格中的 JTable 对象“表”中,我们如何创建一个打印作业,以便可以在 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);
}

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

4

3 回答 3

2

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

来自如何使用表格的打印部分

印刷

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,这是一个检查异常;这就是为什么上面的例子使用了 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 图形跟踪中的打印课程。

于 2013-01-27T06:02:28.137 回答
2

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

于 2013-01-27T03:20:32.177 回答
0

我希望可以帮助您使用此代码尝试如何在 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);
    }
}                                         
于 2014-06-10T16:56:49.363 回答