Как изменить цвет JButton при нажатии мыши?
Я хочу иметь пользовательские цвета в соответствии с событиями мыши (ввод мыши, выход, нажатие и т. Д.). Поэтому, чтобы достичь этого, я написал код ниже. Это хорошо для всего, кроме случая нажатия кнопки мыши, который ничего не делает. Это работает только если я переопределить цвет вUIManager
нравитсяUIManager.put("Button.select", Color.red);
, Проблема сUIManager
, что это изменится для всех моих кнопок.
Может кто-нибудь сказать мне, что я могу делать неправильно или как лучше всего выполнить то, что я пытаюсь сделать?
Мой код:
final JButton btnSave = new JButton("Save");
btnSave.setForeground(new Color(0, 135, 200).brighter());
btnSave.setHorizontalTextPosition(SwingConstants.CENTER);
btnSave.setBorder(null);
btnSave.setBackground(new Color(3, 59, 90));
btnSave.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
btnSave.setBackground(new Color(3, 59, 90));
}
@Override
public void mousePressed(MouseEvent e) {
// Not working :(
btnSave.setBackground(Color.pink);
}
@Override
public void mouseExited(MouseEvent e) {
btnSave.setBackground(new Color(3, 59, 90));
}
@Override
public void mouseEntered(MouseEvent e) {
btnSave.setBackground(new Color(3, 59, 90).brighter());
}
@Override
public void mouseClicked(MouseEvent e) {
btnSave.setBackground(new Color(3, 59, 90).brighter());
}
});
Edit1: Итак, вместо мыши слушателя, я используюChangeListener
а такжеButtonModel
как предложено mKorbel. С этим кодом я все еще не наблюдаю никаких изменений при нажатии кнопки мыши, кроме случаев, когда я нажимаю и перетаскиваю за пределы кнопки. есть идеи?
btnSave.getModel().addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
ButtonModel model = (ButtonModel) e.getSource();
if (model.isRollover()) {
btnSave.setBackground(new Color(3, 59, 90).brighter());
} else if (model.isPressed()) {
btnSave.setBackground(Color.BLACK);
} else {
btnSave.setBackground(new Color(3, 59, 90));
}
}
});