gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 09:14:11 24 4
gpt4 key购买 nike

我希望当我用鼠标单击JButton 时,它的背景颜色会发生变化。我第一次点击它时,我希望背景是红色的。第二次单击它时,我希望颜色为蓝色。

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

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
if (evt.getSource() == "red")
{
jButton1.setBackground(Color.red);
}
else
{
jButton1.setBackground(Color.blue);
}
}

这是我的应用程序的屏幕截图。

enter image description here

最佳答案

Look & Feel您正在使用处理按钮的背景,因此您无法更改它。您也许可以通过执行以下操作来更改它(但我认为它看起来很难看):

button.setBorderPainted(false);
button.setContentAreaFilled(false);
button.setOpaque(true);
button.setBackground(Color.BLUE);

为了测试它并确保它是这样,请运行以下命令 SSCCEs :

没有 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 绘制按钮”。

public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
//Install windows LaF
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
e.printStackTrace();
}
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);
});
}

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

此外,if 语句:

evt.getSource() == "red"

永远不会是真的。您可能需要更好地考虑情况。要比较字符串,您必须使用 String#equals 方法。要将其与组件(名为 red 的变量)进行比较(因为 evt.getSource() 可能会返回一个组件对象),您必须 if (evt.getSource() == red) ...

关于java - 单击需要在Java中更改按钮颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59136590/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com