gpt4 book ai didi

JAVA:jButton setBackground 在单击事件上发生变化

转载 作者:行者123 更新时间:2023-12-02 04:46:55 26 4
gpt4 key购买 nike

我一直在到处寻找解决我的问题的方法,但没有找到任何有效的方法:要求:在 jButton“颜色!”的红色和绿色背景颜色之间切换

状态:当我第一次单击该按钮时,它会变为红色,并且在下次单击时不会变为绿色。

这是我到目前为止的代码:

private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {
Color colors[] = new Color[]
{
Color.red, Color.green
};
for (int i = 0; i <= (colors.length-1); i++)
{
jButton1.setBackground(colors[i]);
}

更新(解决方案):

 if (jButton1.getBackground() == Color.black || jButton1.getBackground() == Color.green)
{
jButton1.setBackground(colors[0]);
}
else
{
jButton1.setBackground(colors[1]);
}

最佳答案

使用 ActionListener 而不是带有按钮的 MouseListener,鼠标并不是触发按钮的唯一方式。

您需要某种方法来了解按钮的当前状态,例如,您可以...

  • if 语句中检查按钮的当前颜色并切换到其他颜色
  • 使用 boolean 值在状态之间切换
  • 使用模块化数学(我知道很可怕)

例如...

public class TestPane extends JPanel {

private int clickCount = 0;

public TestPane() {
JButton btn = new JButton("Click");
btn.setContentAreaFilled(false);
btn.setBackground(Color.RED);
btn.setOpaque(true);
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
clickCount++;
if (clickCount % 2 == 0) {
System.out.println("Red");
btn.setBackground(Color.RED);
} else {
System.out.println("Green");
btn.setBackground(Color.GREEN);
}
}
});
add(btn);
}

}

The button starts off a (null) so the first click should change to RED, second to GREEN, third to RED, etc...

public class TestPane extends JPanel {

protected static final Color[] COLORS = new Color[]{null, Color.RED, Color.GREEN};
private int clickCount = 0;

public TestPane() {
JButton btn = new JButton("Click");
btn.setContentAreaFilled(false);
btn.setBackground(null);
btn.setOpaque(true);
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
clickCount++;
switch (clickCount) {
case 1:
case 2:
btn.setBackground(COLORS[clickCount]);
break;
}
}
});
add(btn);
}

}

如果你有两种以上的颜色,那么你可以简单地使用

if (clickCount > 0 && clickCount < COLORS.length) {
btn.setBackground(COLORS[clickCount]);
}

而不是switch语句

关于JAVA:jButton setBackground 在单击事件上发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29596813/

26 4 0
文章推荐: Java 日期到字符串解析/验证需要帮助
文章推荐: java - 如何格式化它以打印月份名称而不是数字?
文章推荐: java - 使用正则表达式排除字符串的一部分
文章推荐: java - 打印 Java ArrayList 困境