gpt4 book ai didi

java - 如何在绘制 JPanel 后重新绘制它?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:35:07 24 4
gpt4 key购买 nike

我有一个继承自 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();
}

最佳答案

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

编辑:从 invalidate 更改为 revalidate

关于java - 如何在绘制 JPanel 后重新绘制它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4392722/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com