我的程序上有一个按钮,用它显示的数据打印JTable(它填充了用户从数据库中搜索的数据)。我想在标题上打印2行:一行包含组合框中所选项目的名称(这是有效的),另一行带有学生名称(这一行不起作用)。这是我的代码:
MessageFormat header = new MessageFormat("Ficha Pedagógica - "+jComboBox1.getSelectedItem());
MessageFormat footer = new MessageFormat("Página {0,number,integer}");
try{
jTable2.print(JTable.PrintMode.NORMAL, header, null);
}
catch(java.awt.print.PrinterException e){
System.out.println("error");
}
当我尝试使用标题执行此操作时,它没有破坏该行,而是在第一行前面显示“/ nAl ...”:
MessageFormat header = new MessageFormat("Ficha Pedagógica - "+jComboBox1.getSelectedItem()+"\nNome do Aluno - "+jTextField1.getText());
此外,当我尝试使用2个标题时,我无法这样做,因为打印功能不允许它。那么,我怎么能有2个标题行?
答案 0 :(得分:0)
不幸的是,我认为没有办法做到这一点。 jTable
正在调用AWT函数来绘制页眉和页脚。它使用FontMetrics.getStringBounds()
来衡量标题(和页脚)将占用多少空间,然后使用Graphics.drawString()
绘制它。不幸的是,这两种方法都没有考虑换行。
您可以通过从JTable获取Printable对象并使用您自己的实现包装它来实现此目的。但这不是微不足道的。