2011-10-23 33 views
1

嗨大家感謝您花時間看我的問題。如何打印到J文本框中的樹形圖的全部內容?

我想使用我創建的JText字段來顯示包含所有員工的樹圖的值:ID號(作爲地圖中的鍵)以及包含字符串的Employee對象所有員工細節的方法。

系統似乎工作正常,因爲當我打印到控制檯(CMD)它工作正常,並打印出MAP中的所有值,但是當我嘗試打印到JText框時,它只打印一個對象(一個員工)從整個列表中。

我相信問題在於我用於訪問所有細節的for循環。

問題在於這行代碼:

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

這是它的全部代碼:

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組件,並添加它到容器。 JFrame使用BorderLayout作爲默認佈局。 此佈局將您的JTextField組件放在中心(frameAllEmps.add(writeStrings))。所以你失去了以前添加的JTextField並只看到最後一個JTextField組件。

+0

謝謝!! 有道理 – Binyomin

+0

是的,做了伎倆 再次感謝! – Binyomin