因此,在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);
        }
    }
}

09-11 20:31