Java LinkedHashMap中带有JTextFields的JLabel
我有一个程序,其中一部分要求用户确定40周内每周的天数(def=5) 用户首先填写40周的天数,然后设置每周天数 现在,我将Java LinkedHashMap中带有JTextFields的JLabel,java,swing,collections,hashmap,iteration,Java,Swing,Collections,Hashmap,Iteration,我有一个程序,其中一部分要求用户确定40周内每周的天数(def=5) 用户首先填写40周的天数,然后设置每周天数 现在,我将JLabel(键)和JTextfield(值)存储在LinkedHashMap中 LinkedHashMap<JLabel, JTextField> weeksMap = new LinkedHashMap<JLabel,JTextField>(); for (int i=1; i<=40; i++) { JLabel w
JLabel
(键)和JTextfield
(值)存储在LinkedHashMap
中
LinkedHashMap<JLabel, JTextField> weeksMap = new LinkedHashMap<JLabel,JTextField>();
for (int i=1; i<=40; i++) {
JLabel weekL = new JLabel("Week "+i);
JTextField weekF = new JTextField(10);
weekF.setText("5");
//SetWeekAction sWA = new SetWeekAction(mainPane, weekL, weekF);
//weekF.addActionListener(sWA);
weeksMap.put((weekL), weekF);
}
GUI视图
如何获取例如“第23周”的文本字段?for循环遍历列表并正确添加对象,但我不再引用该特定对象 您可以使用一个
ArrayList
存储文本字段和标签文本
ArrayList<JTextField> weeks = new ArrayList<JTextField>();
for (int i=1; i<=40; i++) {
JTextField weekF = new JTextField(10);
weekF.setName("Week "+i);
weekF.setText("5");
JLabel weekL = new JLabel(weekF.getName());
weekL.setLabelFor(weekF);
weeks.put(weekF);
}
ArrayList weeks=new ArrayList();
对于(int i=1;i,我可以想出一个简单的解决方案,将两个单独的LinkedHashMap一个作为LinkedHashMap,另一个作为LinkedHashMap
现在,在循环中,您可以使用循环中的int值作为JLabel和JTextField的键在LinkedHashMap中添加值,同时将它们存储在两个LinkedHashMap中。
由于JLabel和JTextField现在都根据创建它们的循环号附加了整数值,因此您可以使用这些整数值访问它们
希望这能解决您的问题。为什么要映射JLabel和JTextField?这种链接有什么用?将字符串映射到JTextField的映射不是功能更强大吗?或者甚至可能是一个简单的ArrayList
?或者更好-JTable将非常适合于此。和/或某种独立于UI?Jtabel最终就是它的来源。独立管理信息的模型是将存储到Arraylist中的“Week”对象。它的值必须来自在JTextFields@Hovercraft满是鳗鱼标签链接到文本字段,因为它遵循相同的索引,所以为什么可以它不是TextField的键吗?JTextField[]textary=newjtextfield[numberOfWeeks];for(int ii=0;ii
可以通过数组访问文本字段,并且可以从索引推断星期。或者使用@hovercraftfullofels建议的JTable
。
ArrayList<JTextField> weeks = new ArrayList<JTextField>();
for (int i=1; i<=40; i++) {
JTextField weekF = new JTextField(10);
weekF.setName("Week "+i);
weekF.setText("5");
JLabel weekL = new JLabel(weekF.getName());
weekL.setLabelFor(weekF);
weeks.put(weekF);
}