Malen einer bestimmten Schaltfläche aus einem Raster von Schaltflächen

Das folgende Schaltflächenraster ist definiert als:

JButton button_x = new RoundButton();

woherRoundButton ist definiert als :

public class RoundButton extends JButton {

    public RoundButton(String label) {
        super(label);
        this.setContentAreaFilled(false);
        Dimension size = this.getPreferredSize();
        size.height = size.width = Math.max(size.height, size.width);
        this.setPreferredSize(size);
    }

    @Override
    protected void paintComponent(Graphics g) {
        if(!GameState.getIfComplete()) { // If the game is not complete or has just started
            this.setBorder(null);
            g.setColor(Color.BLACK);
            g.fillRect(0, 0, this.getSize().width, this.getSize().height);
            if(this.getModel().isArmed()) {
               g.setColor(Color.RED);
            }else {
                g.setColor(Color.GREEN);
            }
            g.fillOval(0,0,this.getSize().width-1,this.getSize().height-1);
            super.paintComponent(g);
        }else {
            this.setBorder(null);
            g.setColor(Color.BLACK);
            g.fillRect(0, 0, this.getSize().width, this.getSize().height);
            g.setColor(Color.WHITE);
            g.fillOval(0,0,this.getSize().width-1,this.getSize().height-1);
            super.paintComponent(g); 
        }
    }

}

Derzeit sind alle Schaltflächen in Grün lackiert, aber unter bestimmten Umständen möchte ich bestimmte Schaltflächen in Weiß lackieren (das ist der Code im else-Teil). Zum Beispiel, wenn!GameState.getIfComplete() kehrt zurückfalse Ich möchte die Schaltflächen in der ersten Spalte in Weiß malen. Also rufe ich anrepaint wie :

buttons[0].repaint();
buttons[3].repaint();
buttons[6].repaint();

Das geht aber nicht! Bei der ersten Spalte sind einige andere Knöpfe ebenfalls weiß gestrichen. Warum das ?

Was ist los mit dem Anruf? Wie male ich einen bestimmten Knopf?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage