单击按钮需要在Java中更改颜色

单击按钮需要在Java中更改颜色,java,swing,Java,Swing,当我用鼠标点击按钮时,我想改变按钮的背景色。我第一次点击它时,我希望背景是红色的。第二次单击时,我希望颜色为蓝色 到目前为止,我还没有成功。这是我的密码 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt){ 如果(evt.getSource()=“红色”) { jButton1.收进背景(颜色:红色); } 其他的 { jButton1.收进背景(颜色:蓝色); } } 这是我的应用程序的scrren捕获 您

当我用鼠标点击按钮时,我想改变按钮的背景色。我第一次点击它时,我希望背景是红色的。第二次单击时,我希望颜色为蓝色

到目前为止,我还没有成功。这是我的密码

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt){
如果(evt.getSource()=“红色”)
{
jButton1.收进背景(颜色:红色);
}
其他的
{
jButton1.收进背景(颜色:蓝色);
}
}
这是我的应用程序的scrren捕获

您正在使用的按钮会处理按钮的背景,因此您无法更改它。你可以通过以下方式改变它(但它看起来很难看——我的观点):

button.setBorderPainted(false);
button.setContentAreaFilled(false);
button.setOpaque(true);
button.setBackground(Color.BLUE);
要测试它并确保其正确性,请运行以下操作:

在没有LAF的情况下,可以更改背景:

public static void main(String[] args) {
    SwingUtilities.invokeLater(() -> {
        JFrame frame = new JFrame("Test");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLayout(new FlowLayout());

        JButton button = new JButton("1");
        button.setBackground(Color.BLUE);
        button.addActionListener(e -> {
            Color newBackground = button.getBackground().equals(Color.RED) ? Color.BLUE : Color.RED;
            button.setBackground(newBackground);
        });

        frame.add(button);

        frame.setLocationByPlatform(true);
        frame.pack();
        frame.setVisible(true);
    });
}
而windows的外观和感觉是无法改变的,因为“windows绘制按钮”

您将看到,在第二个示例中,背景不会(完全)改变。没有办法改变背景和保持外观。你必须自己画所有的画,我认为这并不容易

此外,如果声明:

evt.getSource() == "red"

永远不会是真的。你可能想更好地考虑这种情况。要比较字符串,必须使用
String#equals
方法。要将其与组件(名为
red
)进行比较(因为evt.getSource()可能会返回组件对象),必须
如果(evt.getSource()==red)…

您可能希望使持有按钮的组件失效并重新喷漆。我不知道如何为该组件编写代码,但我单击了红色“已更改”,我需要在JOptionPane上发送消息
evt.getSource() == "red"