2011-10-23 9 views
1

こんにちは皆さん、私の質問を見る時間を取ってくれてありがとう。Jテキストボックスにツリーマップの内容全体を印刷するにはどうすればよいですか?

私はすべての従業員を含むツリーマップの値を表示するために作成したJTextフィールドを使用したいと思います。ID番号(マップのキーとして)と、文字列を含むEmployeeオブジェクトすべての従業員の詳細の方法。

システムは正常に動作しているようですが、コンソール(CMD)に印刷するとMAPのすべての値が印刷されますが、JTextボックスに印刷しようとすると1つのオブジェクト従業員)をリスト全体から選択します。

私はすべての詳細にアクセスするために使用している私のforループにあると思う。

public void chooseEmpToAdd() 
{ 


    JFrame frameAllEmps = new JFrame(); 
     frameAllEmps.setSize(450, 140); 
    frameAllEmps.pack(); 
    frameAllEmps.setVisible(true); 


    int x = 0; 
    System.out.println("ALL Emps from the tree map"); 
    for(int key:employeeMap.keySet()) 
    { 
     JTextField writeStrings; 
     writeStrings = new JTextField(20); 
     Employee dEmp = employeeMap.get(key); 
     System.out.println("Employe no :" +x+": "+dEmp); 
     writeStrings.setText(writeStrings.getText()+" "+dEmp); 
     frameAllEmps.add(writeStrings); 
     x++; 
    } 

} 
+0

ループのように連結して文字列を作成することは悪いことです。新しいStringインスタンスがたくさん作成されます。 StringBuilderを使用します。 –

答えて

3
writeStrings = new JTextField(20); 

あなたはすべての繰り返しで新しいのJTextFieldコンポーネントを作成して追加します。これは、その全体のコードがある

writeStrings.setText(writeStrings.getText()+" "+dEmp); 

問題は、このコード行であります容器に入れる。 JFrameはBorderLayoutをデフォルトレイアウトとして使用します。 このレイアウトは、JTextFieldコンポーネントを中央に配置します(frameAllEmps.add(writeStrings))。したがって、以前に追加されたJTextFieldが失われ、最後のJTextFieldコンポーネントのみが表示されます。

+0

ありがとうございます! それは意味をなさない – Binyomin

+0

あのトリックでした もう一度ありがとう!! – Binyomin

関連する問題