public void itemStateChanged(ItemEvent event)
{
if(event.getSource() == doctorBox)
{
if (doctorBox.isSelected() == true)
JOptionPane.showMessageDialog(null, "you are a doctor");
else if (doctorBox.isSelected() != true)
JOptionPane.showMessageDialog(null, "you are not a doctor");
}
}
运行应用程序时...默认情况下取消选中该复选框 当我检查“doctorBox”时...我得到两个弹出的对话框:“你是医生”和“你不是医生”,复选框也没有被检查!
为什么会这样?如何更改代码才能正常工作?
答案 0 :(得分:1)
以下是一些很棒的samples。删除除一个以外的所有CheckBox,并确保根据提供的链接的详细信息,只有一个侦听器到单个CheckBox。我的猜测是,由于将侦听器与CheckBoxes一起添加的方式,会出现奇怪的现象。
答案 1 :(得分:1)
偶然帮助你
您的逻辑,因为您知道选择是开启还是关闭,请尝试以下
if(doctorBox.isSelected())
//do something
else
//do something else
如果未选中复选框,请从ItemListener更改为ActionListener。
private class aListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == doctorBox){
if(doctorBox.isSelected())
JOptionPane.showMessageDialog(null, "you are a doctor");
else {
JOptionPane.showMessageDialog(null, "you are not a doctor");
}
}
}
}
如果您查看当前代码,并使用调试逐步执行它,您将看到ItemListener被触发2次。第一次检查它,第二次取消检查它。全部只需点击一下。在这种情况下,我无法解释itemListener的内部工作。 ActionListener工作得更好