开发者社区> 问答> 正文

Button.isSelected()不返回true

我正在创建一个带有3个按钮,3个复选框和3个单选按钮的JFrame。我在按下3个按钮中的1个时执行的功能有问题。这是功能:

private void setCenterColors() {

    if(redB.isSelected()) {
        center.setBackground(Color.RED);
    } else if (greenB.isSelected()) {
        center.setBackground(Color.GREEN);
    } else if (blueB.isSelected()){
        center.setBackground(Color.BLUE);   
    }
    System.out.println(center.getBackground());
}

redB,greenB和blueB都是JButton。

按钮的事件处理程序为:

class ChoiceListenerButton implements ActionListener {
        public void actionPerformed(ActionEvent event)
        {
            setCenterColors();
            repaint();
        }
    }

    listenerButton = new ChoiceListenerButton();

当我执行程序并按下按钮时,它们全部返回false,而其中之一应返回true。我应该怎么做才能看到按下了哪个按钮?感谢您提供任何帮助,如果您需要完整的代码,请询问,我将在看到通知后立即重播。谢谢。

问题来源:Stack Overflow

展开
收起
montos 2020-03-26 19:11:18 668 0
1 条回答
写回答
取消 提交回答
  • 如下进行:

    class ChoiceListenerButton implements ActionListener {
        public void actionPerformed(ActionEvent event) {
            setCenterColors(event);
            repaint();
        }
    
        private void setCenterColors(ActionEvent event) {
            if(event.getSource() == redB) {
                center.setBackground(Color.RED);
            } else if (event.getSource() == greenB) {
                center.setBackground(Color.GREEN);
            } else if (event.getSource() == blueB){
                center.setBackground(Color.BLUE);   
            }
            System.out.println(center.getBackground());
        }
    }
    

    另外,请确保已添加listenerButton到按钮,例如redB.addActionListener(listenerButton)。

    回答来源:Stack Overflow

    2020-03-26 19:16:07
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载