【问题标题】:How to print a JTable object in the Java application如何在 Java 应用程序中打印 JTable 对象
【发布时间】:2014-06-11 00:56:49
【问题描述】:

问题 现在,一旦从数据库中获取数据并显示在嵌入在 scrollPane 中的 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);
}

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

【问题讨论】:

标签: java swing printing jtable awt


【解决方案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 来获取 表格的可打印对象。有关可打印的更多信息,请参阅 2D 图形小道中的打印课程。

【讨论】:

    【解决方案3】:

    我希望这段代码能帮到你,试试 How to print JTable in Java netbeans

        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);
        }
    }                                         
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-16
      • 2016-08-29
      • 2011-01-29
      • 2012-09-04
      • 2021-11-30
      • 1970-01-01
      相关资源
      最近更新 更多