[英]JAVA: jButton setBackground change on click event
我一直在到处寻找解决问题的方法,但没有找到任何可行的方法:要求:在jButton'Colour!'的红色和绿色背景颜色之间切换。
状态:当我第一次单击该按钮时,它变为红色,并且在下次单击时不变为绿色。
这是我到目前为止的代码:
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);
}
}
该按钮以(null)开始,因此第一次单击应更改为RED,第二次更改为GREEN,第三次更改为RED,依此类推...
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
语句
jButton1.setBackground(Color.black);
private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {
Color colors[] = new Color[]
{
Color.red, Color.green
};
if (jButton1.getBackground() == Color.black || jButton1.getBackground() == Color.green)
{
jButton1.setBackground(colors[0]);
}
else
{
jButton1.setBackground(colors[1]);
} }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.