我的项目中有一个Frame extends JFrame
,它只是一个包含Controller
对象的框架,该对象随程序执行而更新,并用于更新屏幕。我覆盖了JFrame#paintComponent(Graphics g)
,因此当我打电话给JFrame#repaint
时,我的Frame
被重画了。我知道我的框架不仅会在我调用其重绘方法时重绘,而且在调整大小后将其设置为可见(再加上一个我忘记了吗?)。我的框架无法调整大小,但是会最小化。问题是我只能在直接Controller
调用期间确保repaint
对象的稳定性。因此,我搜索并发现了JFrame#setIgnoreRepaint
,但不确定不确定它的javadoc定义:
设置是否应忽略从操作系统接收到的绘制消息。这不会影响AWT在软件中生成的绘画事件,除非它们是对OS级绘画消息的立即响应。
您认为我可以使用它吗?还是危险?
我概述了我的问题:我需要确保仅自动调用paintComponent / repaint,并且如果可以使用JFrame#setIgnoreRepaint
来实现它。另外,永远不要让重画调用自动发生是可以的吗?
编辑:我一直在搜索,然后遇到一个话题(对不起,现在找不到了),有人在谈论RepaintManager#markCompletlyClean
,这是否可以解决我的问题?