Java 画完画后如何重新粉刷?

Java 画完画后如何重新粉刷?,java,swing,jpanel,Java,Swing,Jpanel,我有一个从JPanel继承的组件,我在上面画了一个网格。现在我有了一个JComboBox,我希望用户能够在这里选择网格大小,然后按下按钮更改网格(重新绘制网格) 问题是它绘制了初始网格,但一旦用户从JComboBox中选择网格大小并单击按钮,就不会发生任何事情。我必须最小化表单,然后再次恢复它以查看更改 有什么想法吗?代码如下 组成部分: 主类 尝试调用somePanel.revalidate()。这将告诉AWT您已经更改了组件树 编辑:从invalidate更改为revalidate谢谢您的回

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

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

有什么想法吗?代码如下

组成部分: 主类
尝试调用
somePanel.revalidate()
。这将告诉AWT您已经更改了组件树


编辑:从
invalidate
更改为
revalidate

谢谢您的回答。我已经试过了,但没有成功:(J.您可能想更新问题中的代码以显示这一点。
someButtonActionPerformed
方法是否实际被调用?您是否添加了
系统.out.println
以进行检查?哎呀!我的回答中是说
重新验证
,而不是
无效
。这可能是问题所在。这正是问题所在!谢谢你,我的朋友,你非常有用。J.没问题。我建议你阅读一下
无效
验证
重新验证
,如果你还没有读过的话。它们可能很难正确。
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();
}