我有以下听众:
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 总是被取消选中。
我希望这是有道理的。任何有关如何避免这种情况的建议表示赞赏。
To be more even more clear, what I'm trying to achieve is have a listener for myCheckBox which when the checkbox is selected it will select some of the checkboxes from the first column of mTableSteps. 而且,如果我从表中选择/取消选择一个复选框,它会将 myCheckBox 置于未选中状态。非常感谢。