大家好,感谢您花时间看我的问题。
我想使用我创建的JText字段来显示包含所有员工的树图的值:ID号(作为地图中的键)以及包含to字符串方法的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 :(得分:3)
writeStrings = new JTextField(20);
您在每次迭代时创建 new JTextField组件并将其添加到容器中。 JFrame使用BorderLayout作为默认布局。 此布局将JTextField组件放在中心(frameAllEmps.add(writeStrings))。所以你丢失了之前添加的JTextField,只看到了最后一个JTextField组件。