单击按钮需要在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"