使用MessageFormat从DataBase打印2个标题行来打印JTable?

时间:2014-10-27 18:14:31

标签: java postgresql database-connection

我的程序上有一个按钮,用它显示的数据打印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个标题行?

1 个答案:

答案 0 :(得分:0)

不幸的是,我认为没有办法做到这一点。 jTable正在调用AWT函数来绘制页眉和页脚。它使用FontMetrics.getStringBounds()来衡量标题(和页脚)将占用多少空间,然后使用Graphics.drawString()绘制它。不幸的是,这两种方法都没有考虑换行。

您可以通过从JTable获取Printable对象并使用您自己的实现包装它来实现此目的。但这不是微不足道的。