我有一个程序,在一个部分要求用户确定40周内每周的天数(def = 5)。
用户首先填写40周的天数,然后设置每周的天数。
现在,我JLabel
存储了一个JTextfield
(KEY)和LinkedHashMap
(VALUE),
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);
}
并且在用户设置特定年份的总天数后,它们将被添加到面板中。
编辑 - 注意:在HashMap
中使用这两个的原因是我无法在舔上创建元素,否则我可以创建无限的标签和文本字段,我不希望使用buttonpressed=true
或者这样的。我需要两个文本字段和标签&#39;准备好&#39;点击之前点击&#39;发生的情况。
for (Map.Entry<JLabel, JTextField> entry : weeksMap.entrySet()) {
index++;
weeksPane.add(entry.getKey());
weeksPane.add(entry.getValue());
}
如何获取例如&#39;第23周&#39;的文本字段? for循环遍历List并正确添加Objects,但我不再引用该某个对象。
答案 0 :(得分:0)
您可以使用一个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);
}
在更新事件中,您可以使周表格无效并重绘
答案 1 :(得分:0)
我可以想到一个简单的解决方案,即将两个单独的LinkedHashMap设为LinkedHashMap&lt;整数,JLabel&gt;另一个是LinkedHashMap
现在在循环中,您可以使用循环中的int值作为JLabel和JTextField的键,在LinkedHashMap中添加值,同时将它们存储在两个LinkedHashMap中。 由于JLabel和JTextField现在都根据创建它们的循环数附加了整数值,因此可以使用这些整数值访问它们。
希望这可以解决您的问题。