JAVA:jButton setBackground点击事件的更改

时间:2015-04-13 01:53:06

标签: java swing toggle jbutton

我一直在寻找解决我问题的方法,但没有发现任何有效的方法: 要求:在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]);
       } 

2 个答案:

答案 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]);
               } }