смена цвета кнопки при наведении мышки в Java

Всем привет. Есть несколько кнопок у которых есть mouseListener. По умолчанию кнопки имеют цвет фона Color.WHITE, и цвет надписей Color.BLACK. Так же, через UIManager я задаю кнопкам цвет при нажатии. Вот код UIManager'а:

UIManager.put("Button.select", Color.LIGHT_GRAY);

Мне необходимо при наведении на кнопку, менять ее цвет на черный а шрифт на белый, при убирании мышки с кнопки надо чтобы цвет оставался белым а текст черным. Так же, требуется при нажатии на кнопку чтобы фон был Светло-серым а текст черным. Сделал свой класс слушателя, отнаследованный от MouseListener. В конструктор класса передаю (Component c) - саму кнопку Пробовал реализовать это следующим кодом:

@Override
public void mouseEntered(MouseEvent e) {
    if(c.isEnabled()) {
        c.setBackground(Color.BLACK);
        c.setForeground(Color.WHITE);
    }
}

@Override
public void mouseExited(MouseEvent e) {
    if(c.isEnabled()) {
        c.setBackground(Color.WHITE);
        c.setForeground(Color.BLACK);
    }
}

Все работает хорошо, но есть проблема. Если навести курсор на кнопку, зажать кнопку, ее цвет изменится на серый, а текст станет черным. Это нормально. Если убрать ЗАЖАТЫЙ курсор с кнопки, она вновь станет белого фона с черным текстом. Это нормально. НО! если вновь навести ЗАЖАТЫЙ курсор на кнопку, то цвет текста становиться белым, а сам фон остается серого цвета. Ниже прикреплю скрины:

Кнопка по умолчанию:

введите сюда описание изображения

Кнопка ЗАЖАТАЯ:

введите сюда описание изображения

Кнопка ЗАЖАТА, курсор в стороне

введите сюда описание изображения

Кнопка ЗАЖАТА, курсор возвращен на кнопку

введите сюда описание изображения

Подскажите, как можно исправить, чтобы при наведении зажатого курсора, цвет кнопки становился серым, а текст черным?


Ответы (0 шт):