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置于未选中状态。非常感谢。