java - JPanel 图形清除和重新绘制?

标签 java swing graphics jpanel paintcomponent

我有一个带有 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/

相关文章:

graphics - 开发预计通过 RDP 运行的应用程序;有小费吗?

c - 在C中显示颜色数组

javascript - Jcrop 没有正确裁剪图像

java - 使用守护进程(jsvc)将资源文件添加到类路径

java - 带有 AAPT2 错误 : check logs for details 的 Lottie 2.8.0

java - 需要帮助将此 IntelliJ 运行配置转换为命令行

java - 基本MVC构建,ActionListener不起作用

java - SonarQube项目具体配置

java - ScrollBar 在 Swing 的 JScrollpane 中移动不流畅

java - JSlider 未添加到 JLabel