Как перекрасить JPanel после того, как нарисовали на нем?

у меня есть компонент, который наследуется от JPanel, я рисую на нем сетку. Теперь у меня есть JComboBox, и я хочу, чтобы пользователь мог выбрать размер сетки здесь, а затем нажать кнопку, чтобы изменить сетку (перекрасить сетку).

дело в том, что он рисует начальную сетку, но как только пользователь выбирает размер сетки из JComboBox и нажимает кнопку, ничего не происходит. Я должен минимизировать форму, а затем восстановить ее снова, чтобы увидеть изменения.

Какие Идеи? Этот Код приведен ниже.

Компонент:

public class Board extends JPanel {
    ...

    protected void paintComponent(Graphics og) {
        super.paintComponent(og);
        ...
        }
    }    
}

Основной Класс

public class Main extends javax.swing.JFrame {
...

public Main() {                                   //This works great.
    board = new Board( ... );
    somePanel.add(board, BorderLayout.CENTER);

}

public void someButtonActionPerformed(Event e) { //This is not working

    somePanel.remove(board);
    board = new Board( ... );
    somePanel.add(board);
    somePanel.invalidate()
    board.repaint();
}

1 ответов


позвонить somePanel.revalidate(). Это скажет AWT, что вы изменили дерево компонентов.

EDIT: изменено с invalidate to revalidate