当我将鼠标悬停在其上方时,如何将其更改为永久不变的JButton颜色?

时间:2019-04-06 01:26:16

标签: java colors jbutton actionlistener mouselistener

我想要一个JButton,当我将鼠标悬停在其上时,它应该变成绿色,而当鼠标退出时,它应该回到默认值,但是当我单击它时,无论是否悬停在它上面,它都应该变成黄色并保持黄色。它。谢谢。

我已经尝试过mouselistener方法。

     public void mouseEntered(MouseEvent evt) {
           bakery.setBackground(Color.GREEN);
     }

     public void mouseExited(MouseEvent evt){
        bakery.setBackground(UIManager.getColor("control"));
     }

     public void mousePressed(MouseEvent evt){
        bakery.setBackground(Color.YELLOW);          
        }
  });   

我希望一旦单击它,它就会保持黄色,但是看来,当我退出按钮区域时,它将恢复为默认值,而当我再次悬停时,它将再次变为绿色。根据mouselistener的说法,这很有意义,但是我不知道如何获得我真正想要的结果。

1 个答案:

答案 0 :(得分:0)

听起来像您希望按钮保持黄色,直到再次单击?

尝试一下:

public void mouseEntered(MouseEvent e) {
    if (bakery.getBackground() != Color.YELLOW) { // skip if already yellow
        bakery.setBackground(Color.GREEN);
    }
}

public void mouseExited(MouseEvent e) {
    if (bakery.getBackground() != Color.YELLOW) { // skip if already yellow
        bakery.setBackground(UIManager.getColor("control"));
    }
}

public void mousePressed(MouseEvent e) {
    if (bakery.getBackground() != Color.YELLOW) {
        // The first click will set yellow
        bakery.setBackground(Color.YELLOW);
    } else {
        // A second click clears the yellow.
        bakery.setBackground(UIManager.getColor("control"));
    }
}