0
我有以下的聽衆:複選框死循環監聽
mListener = new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if (((JCheckBox) e.getSource()).isSelected()) {
setRequired(true);
} else {
setRequired(false);
}
getTableSteps().repaint();
}
};
myCheckBox.addItemListener(mListener);
for (int i = 0; i < mTableSteps.getRowCount(); i++) {
((JCheckBox) mTableSteps.getCellRenderer(i, 0)).addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
myCheckBox.setSelected(false);
}
});
}
正如你所看到的,myCheckBox是如果被修改的複選框,修改某些從mtablesteps的第一列中的複選框(這樣做在setRequired方法中)。另外,如果mtablesteps列0中的其中一個複選框被修改,他們應該將myCheckBox設置爲不被選中。
現在的問題是,當我第一次選擇myCheckBox它會觸發監聽器,並從mTableSteps中選擇一些複選框。但是當這些複選框被選中時,它們也會觸發它們的監聽器並取消選擇myCheckBox。因此,myCheckBox總是被取消選擇。
我希望這是有道理的。任何建議如何避免這一點表示讚賞。
爲了更加清晰,我試圖實現的是myCheckBox的偵聽器,當選中該複選框時,它將從mTableSteps的第一列中選擇一些複選框。但是,如果我從表中選擇/取消選擇複選框,它會將myCheckBox置於未選中狀態。非常感謝。