Я делаю игру для класса, и для этой игры у меня есть массив кнопок J, которые должны иметь возможность изменять цвета в зависимости от определенных факторов. У меня все получилось, и я менял цвет с помощью setBackground (Color), но теперь я пытаюсь изменить форму кнопок и все еще иметь возможность менять цвета.
Мой текущий код:
import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;
public class CircleButton extends JButton {
Graphics g = this.getGraphics();
public CircleButton(){
super();
setContentAreaFilled(false);
}
protected void paintComponent(Graphics g) {
g.setColor(Color.pink);
g.fillOval(0, 0, getSize().width-1, getSize().height-1);
super.paintComponent(g);
}
public void changeColor(Color c) {
g.setColor(Color.blue);
g.fillOval(0, 0, getSize().width-1, getSize().height-1);
super.paintComponent(g);
}
}
Когда я изменяю свой другой код, чтобы использовать его вместо JButton, он работает, и я начинаю с сетки розовых кругов 8x8, чего я и хочу. Но сейчас я не могу менять цвета. Я попытался добавить метод changeColor, как я показал выше, но я получаю исключение nullPointerException, когда оно достигает строки 20 (g.setColor (Color.blue)).
Я думаю, что проблема в том, как я использую графику, но я не могу точно определить конкретное решение.
У кого-нибудь есть предложения?