如何在绘制之后重新绘制JPanel?

Aer*_*eek 8 java swing jpanel

我有一个继承自JPanel的组件,我在其上绘制一个网格.现在我有一个JComboBox,我希望用户能够在这里选择网格大小,然后按一个按钮使网格更改(重新绘制网格).

问题在于它绘制了初始网格,但是一旦用户从JComboBox中选择网格大小并单击按钮,就不会发生任何事情.我必须最小化表单,然后再次恢复它以查看更改.

有任何想法吗?守则如下.

组件:

public class Board extends JPanel {
    ...

    protected void paintComponent(Graphics og) {
        super.paintComponent(og);
        ...
        }
    }    
}
Run Code Online (Sandbox Code Playgroud)

主类

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();
}
Run Code Online (Sandbox Code Playgroud)

Cam*_*ner 17

试着打电话somePanel.revalidate().这将告诉AWT你已经改变了组件树.

编辑:从改变invalidaterevalidate