Java 打印JTable时遇到问题

Java 打印JTable时遇到问题,java,swing,printing,jtable,Java,Swing,Printing,Jtable,对于我的法语动词变位程序,我试图包括一个打印变位的选项(以表格形式) 但是问题是它打印的是一个空白框,我在一些地方读到,这是因为该表在GUI或类似的东西中不可见。问题是我希望打印表时不将其添加到GUI中 表的代码为: JTable getPrint(String Infinitive) { String [] aPresent = fetchTense(Tense.PRESENT, getID(Infinitive)).split("\n"); String [] aPerfec

对于我的法语动词变位程序,我试图包括一个打印变位的选项(以表格形式)

但是问题是它打印的是一个空白框,我在一些地方读到,这是因为该表在GUI或类似的东西中不可见。问题是我希望打印表时不将其添加到GUI中

表的代码为:

JTable getPrint(String Infinitive)
{
    String [] aPresent = fetchTense(Tense.PRESENT, getID(Infinitive)).split("\n");
    String [] aPerfect = fetchTense(Tense.PERFECT, getID(Infinitive)).split("\n");
    String [] aImperfect = fetchTense(Tense.IMPERFECT, getID(Infinitive)).split("\n");
    String [] aSimpleFuture = fetchTense(Tense.SIMPLE, getID(Infinitive)).split("\n");
    String [] aConditional = fetchTense(Tense.CONDITIONAL, getID(Infinitive)).split("\n");
    String [] aColumnNames = {"Pronoun", "Present"  , "Perfect"  , "Imperfect"  , "Simple Future" , "Conditional"  };
    String [][] aValues = {
                             {"Je"     , aPresent[0], aPerfect[0], aImperfect[0], aSimpleFuture[0], aConditional[0]},
                             {"Tu"     , aPresent[1], aPerfect[1], aImperfect[1], aSimpleFuture[1], aConditional[1]},
                             {"Il"     , aPresent[2], aPerfect[2], aImperfect[2], aSimpleFuture[2], aConditional[2]},
                             {"Elle"   , aPresent[3], aPerfect[3], aImperfect[3], aSimpleFuture[3], aConditional[3]},
                             {"On"     , aPresent[4], aPerfect[4], aImperfect[4], aSimpleFuture[4], aConditional[4]},
                             {"Nous"   , aPresent[5], aPerfect[5], aImperfect[5], aSimpleFuture[5], aConditional[5]},
                             {"Vous"   , aPresent[6], aPerfect[6], aImperfect[6], aSimpleFuture[6], aConditional[6]}, 
                             {"Ils"    , aPresent[7], aPerfect[7], aImperfect[7], aSimpleFuture[7], aConditional[7]},
                             {"Elles"  , aPresent[8], aPerfect[8], aImperfect[8], aSimpleFuture[8], aConditional[8]}
                          };
    JTable pTable = new JTable(aValues, aColumnNames);
    return pTable;
}
我想用以下代码打印它:

                try 
            {
                JTable pTable = pGUI.getParser().getPrint("Aller");
                JFrame fix = new JFrame();
                fix.add(pTable);
                fix.setVisible(true);
                fix.setVisible(false);
                boolean bComplete = pTable.print(JTable.PrintMode.FIT_WIDTH, new MessageFormat(String.format("Conjugation of %s", "Aller")), new MessageFormat("Page {0}"));
                if (bComplete) 
                {
                    JOptionPane.showMessageDialog(pGUI, "Finished printing", "Printed", JOptionPane.INFORMATION_MESSAGE);
                } 
                else
                {
                    JOptionPane.showMessageDialog(pGUI, "Printing Cancelled", "Printing Cancelled", JOptionPane.WARNING_MESSAGE);
                }
            } 
            catch (PrinterException e) 
            {
                JOptionPane.showMessageDialog(pGUI, "An error has occured", "Printing Error", JOptionPane.ERROR_MESSAGE);
            }
            finally
            {
                pGUI.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
            }
有人知道这里出了什么问题吗?我该怎么解决

另外,作为旁注,由于这是一个空白框,我不能确定,但当它打印时,如果一个单词太长,无法放入单元格,它是否会对单词短路。。。例如如何解决这个问题

  • 为了更快地获得更好的帮助,请发布一个,因为您发布的非常相似的代码会将正确的输出(打印到文件或纸张上),没有人知道您代码的其他重要部分发生了什么

    可能的解决方案

  • 在不合并阵列的情况下,创建2D阵列并将其作为测试无关的内容,确保为各种数据类型(
    Double
    Date
    ,即不仅仅是
    JTable
    中的
    字符串
    )准备了
    对象[]

  • 所有更新必须在

  • 建造一座新大楼必须在

  • 对于上述两点,都有关于在
    invokeLater

  • 请参阅,尝试工作代码示例()

  • JTables
    教程以课程链接结束


  • 隐马尔可夫模型。。。这两件事是相关的。表格在第一个框中创建,在第二个框中打印,代码的其他部分不会与之交互。我将它放入jFrame进行了测试,它显示了正确的值,只是无法正确打印到文件或纸张。1。您创建“打印输出预览”的原因是什么
    表格在第一个框中创建,在第二个框中打印,不知道怎么可能,当我说box时,我指的是post中的代码:p表格是在get print中创建的,它只是一个JTable对象。它是从另一个在对象上打印()的框中提供给代码的。但是,打印的结果是一个空白框(页眉和页脚可以工作),什么代码适合您?