私はいくつかのJTextFieldを持つパネルを持っています。それぞれの隣に対応するチェックボックスがあり、地図を介してペアでリンクされています。 各チェックボックスが選択または選択解除されたときに、対応するJTextFieldが編集不可能になるコードを記述しました(これはマップなしで行われます)。この部分はうまくいきます。Java JPanelチェックボックスactionlistenerは編集不可能なJtextFieldではありません
しかし、私はこのようにすべてのJTextFieldを制御できる1つのチェックボックスを持っています。これを行う最善の方法はマップのキーと値のペアを反復することだと思ったので、後でボックス/フィールドを追加したい場合は、簡単にマップに追加できます。現在、私のコードでは、このメインチェックボックス(checkBoxAllNormal)を選択すると、JTextFieldはすべて編集不可能になりますが、メインチェックボックスの選択を解除すると、JTextFieldは編集不能のままです。私は2番目
while(it.hasNext()){
であるしかし、私はなぜか、どのようにこの問題を解決するために知っているが、私は地図の私の使用を感じていることはおそらくありません、問題を伝えることができるものから、
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();
}
}
}
});
原因。