我一直在寻找解决我问题的方法,但没有发现任何有效的方法: 要求:在RED&之间切换jButton'Color!'的绿色背景颜色。
状态:当我第一次点击该按钮时,它会变为红色,下次点击时不会变为绿色。
这是我到目前为止的代码:
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]);
}
答案 0 :(得分:2)
使用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)开始,因此第一次点击应该变为红色,第二次点击为绿色,第三次点击为红色等等......
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
语句
答案 1 :(得分:0)
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]);
} }