我有一个带有 paintComponent()
函数的 JPanel
。我会调用它一次,然后当用户单击不同的 JButton
时,我会设置一些标志并想再次调用此函数,因为在设置标志后它会做一些稍微不同的事情。
所以这就是我想知道的:如何清除 paintComponent
中的现有内容?要重绘,是否只需再次调用 paintComponent
即可?
目前我正在尝试以下操作:
flag2 = true;
repaint(); //I expect (want) paintComponent to be called again
在 paint 组件中,我会做类似的事情:
if (flag2==true) {
g.drawRect(...);
} else {
g.drawLine(...);
}
但通过测试,我的做法似乎有问题。
感谢您的帮助。
最佳答案
当您更改面板的属性时,您需要调用:
panel.repaint();
使组件重新绘制。
那么 paintComponent() 方法中的第一条语句应该是:
super.paintComponent(g);
这将绘制背景,因此您现在可以进行自定义绘制。
如果您需要更多帮助,请发布您的 SSCCE这说明了问题。
关于java - JPanel 图形清除和重新绘制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6902771/