0

私のフランス語動詞活用プログラムでは、活用を(表形式で)印刷するオプションを含めようとしています

ただし、問題は空白のボックスが出力されることです。これは、テーブルが 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));
            }

ここで何がうまくいかないのか、どうすれば修正できるのか、誰にもわかりませんか?

また、補足として、これは空白のボックスであるため、確認できませんが、単語が長すぎてセルに収まらない場合、印刷すると単語にショートされます...たとえば。そして、これはどのように修正できますか?

4

1 に答える 1

1
  1. より良い助けを得るには、SSCCEを投稿してください。投稿された非常に類似したコードが正しい出力を(ファイルまたは紙に)出力するため、コードの重要な残りの部分で何が起こったのか誰も知りません

    考えられる解決_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

  2. 配列を一緒にマージせずに、2D 配列を作成し、それをJTable(Object[][] rowData, Object[] columnNames) または JTable(String[][] rowData, String[] columnNames)として配置します。テストには関係ありません。確かにさまざまなデータ型 ( 、、 ei だけでなく)Object[][]が用意されています。DoubleDateStringJTable

  3. すべての更新はEventDispatchThreadで行う必要があります

  4. 新しいTopLevelContainerのビルドはInitialThreadで行う必要があります

  5. 上記の両方の点について、ラップについてがありますinvokeLater

  6. JTables チュートリアルの印刷を参照してください。実際のコード例を試してください ( TablePrintDemo.java )

  7. JTablesチュートリアルはレッスンへのリンクで終了しました印刷

于 2012-10-21T15:57:05.920 に答える