Как изменить цвет JButton при наведении на него курсора, но изменить его навсегда на что-то другое, даже если после этого при наведении курсора я наведусь на него? - PullRequest
0 голосов
/ 06 апреля 2019

Я хочу иметь кнопку 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);          
        }
  });   

Я ожидал, что после того, как я нажму, он должен остаться желтым, но, похоже, когда я выхожу из области кнопок, он возвращается к значению по умолчанию, а когда я снова зависаю, он снова становится зеленым. Это имеет смысл в соответствии с указателем мыши, но я понятия не имею, как получить желаемый результат.

1 Ответ

0 голосов
/ 06 апреля 2019

Звучит так, будто вы хотите, чтобы кнопка оставалась желтой до повторного нажатия?

Попробуйте:

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"));
    }
}
...