问题现在,一旦从数据库中获取数据并显示在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类从表中获取数据。我们如何将显示的表格中显示的数据打印到纸张上?
答案 0 :(得分:2)
只需使用JTable.print()
方法。这是一个article about sending JTable into printer和another one with more parameters
答案 1 :(得分:2)
您显然没有阅读previous question中提供的链接。
的“打印”部分打印
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);
}
}