Я бы хотел использовать JPanel
s и рисовать их, используя вместо этого MouseListener
.
Однако, если вы используете JButtons, попробуйте следующее:
button.setBackground(Color.GREEN);
button.setOpaque(true);
Обратите внимание, что это может не сработать , если вы настраиваете внешний вид используя UIManager
.
Кроме того, вы выполняете массу дополнительной работы, чтобы отобразить цвет на кнопке - это может привести к путанице и вызвать ошибки в будущем. Вместо этого вы можете попробовать создать свой собственный класс:
class ColoredButton extends JButton {
private static final long serialVersionUID = 3040767030924461426L;
private Color color;
public ColoredButton(Color c) {
this.color = c;
this.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
changeColor();
}
});
}
public void changeColor() {
this.setBackground(this.color);
this.setOpaque(true);
}
}
Теперь вы можете создать новую ColoredButton:
// Now, this button will turn green when clicked
ColoredButton temp = new ColoredButton(Color.GREEN);