在Swing中,有没有办法暂时冻结重新绘制JComponent包含层次结构?

Uri*_*Uri 5 java performance swing

如果我在Swing面板中有一堆自定义JComponents,并且每个都可以包含许多其他JComponents,有没有办法在顶级组件上"冻结"重绘,然后解冻它们,触发重绘?

我想我正在尝试做一种本地化的双缓冲.

Pet*_*ham 1

paint(Graphics)如果设置了标志,则覆盖不执行任何操作将阻止绘画发生;您还可以通过重写来添加自己的双缓冲以绘制图像。

您可以使用该组件的方法在每个 swing JComponent 的基础上启用双缓冲setDoubleBuffered(boolean),如果这就是您所需要的,则无需执行任何其他操作。


即使您通过覆盖绘制来禁用顶层组件的绘制,如果子组件正在接收事件,也不会阻止它们进行绘制;您可以用静态图像替换框架的内容(通过使用缓冲图像中的图形调用绘图创建)。