因此,在Java上,“ AND”语句为&&,“ OR”语句为|| ...
那对于XOR呢...那是如果我有两个选择的话。我必须选一个,但不能选两个。
然而,
private class CheckBoxListener implements ItemListener{
public void itemStateChanged(ItemEvent e)
{
if(one.isSelected()^two.isSelected()){
thehandler handler = new thehandler();
button.addActionListener(handler);
}
}}
即使我同时选中了两个复选框,该按钮也已“启用”。这是按钮fyi的处理程序:
private class thehandler implements ActionListener{
public void actionPerformed(ActionEvent event){
dispose();
}
因此,如果两个都被选中,并且如果我单击按钮。框架不应丢弃。仅当选择其中之一时,才进行处理。
最佳答案
^
是Java中的XOR运算符。
关于Swing问题,问题在于单击按钮时不是检查复选框的状态,而是选中复选框时。您应该改成这样:
private class ButtonActionListener implements ActionListener {
/*
* You will probably define a constructor that accepts the two checkboxes
* as arguments.
*/
@Override
public void actionPerformed(ActionEvent event) {
if (one.isSelected() ^ two.isSelected()) {
dispose();
}
}
}
另一种方法是创建
ActionListener
的一个实例。如果恰好选中了其中一个复选框,则可以用addActionListener
添加它,否则用removeActionListener
删除它:private class CheckBoxListener implements ItemListener {
private ActionListener buttonActionListener = new thehandler();
@Override
public void itemStateChanged(ItemEvent event) {
if(one.isSelected() ^ two.isSelected()) {
button.addActionListener(buttonActionListener);
} else {
button.removeActionListener(buttonActionListener);
}
}
}