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

时间:2013-01-27 03:05:34

标签: java swing printing jtable awt

问题现在,一旦从数据库中获取数据并显示在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类从表中获取数据。我们如何将显示的表格中显示的数据打印到纸张上?

3 个答案:

答案 0 :(得分:2)

只需使用JTable.print()方法。这是一个article about sending JTable into printeranother one with more parameters

答案 1 :(得分:2)

您显然没有阅读previous question中提供的链接。

来自How to use Tables

的“打印”部分
  

打印

     

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图形轨迹中打印课程。

答案 2 :(得分: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);
    }
}