【问题标题】:Make JButton alternate colors when clicked单击时使 JButton 交替颜色
【发布时间】:2015-11-29 23:14:28
【问题描述】:

所以我希望 JButton 在单击时在 2 种颜色之间交替。所以说它原本是黄色的。单击它时,它会变为红色,再次单击时,它会变回黄色,然后下一次单击 = 红色,依此类推。

请在此块之间为我填写代码: 假设 JButton 变量是 btn 并使用 Color.RED 和 Color.YELLOW

        btnSearch.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e){
             ...
            }
        }

【问题讨论】:

  • 您将SO 误认为是编码服务。阅读this
  • 使用boolean 标志来确定您应该使用哪种颜色,在每次点击时翻转它的状态。
  • 我在 public void actionPerformed(ActionEvent e){ ... } 块中尝试过,但由于某种原因它不允许我访问其中的全局变量...
  • 请参阅:stackoverflow.com/questions/5808022/… 以获得一些建议。
  • 好吧,我实现了一个整数变量,奇数时变成一种颜色,偶数时变成另一种颜色。

标签: java swing user-interface


【解决方案1】:

我讨厌直接回答。但是,这是一个示例,如果您再仔细考虑一下,它将引导您找到解决方案:

btnSearch.addActionListener(new ActionListener() {
    @Override public void actionPerformed(ActionEvent e){
        btnSearch.setText(btnSearch.getText() + "!");
    }
}

上面的例子会更新按钮上的文字,当你点击的时候会附加!

你的工作是弄清楚如何确定按钮的现有状态,并相应地设置新的背景。

【讨论】:

    【解决方案2】:

    试试这个:

        btnSearch.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e){
    
                    //create pressed as a global boolean
                    if(pressed){
    
                            buttonExample.setBackground(Color.yellow); 
                            pressed = false;
    
                    }else{
    
                            buttonExample.setBackground(Color.red);
                            pressed = true;
                    }
            }
        }
    

    不能 100% 确定这是否可行,如果不行,请从侦听器类(在您的用户界面类中)创建一个函数并添加完全相同的代码,然后从侦听器调用该函数。

    更新:更改了错误的调用:

    JButton.setBackground(Color.yellow);
    JButton.setBackground(COlor.red);
    

    到: buttonExample.setBackground(Color.yellow); buttonExample.setBackground(Color.red);

    【讨论】:

    • setBackground() 不是静态方法(静态也不合理),因此调用JButton.setBackground() 是非法的
    • 非法是什么意思?我一直在使用并且工作正常,你的意思是这不是一个好习惯?
    • setBackground() 是一个实例方法。你不能通过ClassName.methodName()调用实例方法,除非你的变量也被命名为JButton
    • 哦,是的,当然。我的错误,我已经知道了,我会更新。对我来说很明显,但可能会被误解,抱歉。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-06
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    相关资源
    最近更新 更多