【发布时间】:2017-03-20 10:14:56
【问题描述】:
我有一个带有几个 JTextField 的面板,每个 JTextField 旁边都有一个相应的复选框 - 这些通过地图成对链接。 我已经编写了代码,当每个复选框被选中或取消选中时,相应的 JTextField 分别变为不可编辑或可编辑(这是在没有地图的情况下完成的)。这部分效果很好。
但是,我希望有一个可以以这种方式控制所有 JTextField 的复选框。我认为最好的方法是遍历映射键/值对,这样如果我想稍后添加更多框/字段,那么我可以很容易地做到这一点,只需将它们添加到映射中即可。目前在我的代码中,当我选择此主复选框 (checkBoxAllNormal) 时,所有 JTextField 都变得不可编辑(如预期的那样),但是当我取消选择主复选框时,JTextField 仍然不可编辑。
map.put(checkBox_1, textField);
map.put(checkBox_2, textField_1);
map.put(checkBox_3, textField_2);
map.put(checkBox_4, textField_3);
JCheckBox checkBoxAllNormal = new JCheckBox("");
checkBoxAllNormal.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (checkBoxAllNormal.isSelected()){
Iterator it = map.entrySet().iterator();
while(it.hasNext()){
Map.Entry pair = (Map.Entry)it.next();
((JTextField) pair.getValue()).setEditable(false);
it.remove();
}
}
else{
Iterator it = map.entrySet().iterator();
while(it.hasNext()){
Map.Entry pair = (Map.Entry)it.next();
((JTextField) pair.getValue()).setEditable(true);
it.remove();
}
}
}
});
据我所知,问题在于第二个
while(it.hasNext()){
但我不知道为什么或如何解决这个问题,但我觉得我使用地图可能是原因。
【问题讨论】:
标签: java swing checkbox hashmap