使用JFrame#setIgnoreRepaint避免自动重画?

时间:2019-02-11 14:23:10

标签: java jframe repaint

我的项目中有一个Frame extends JFrame,它只是一个包含Controller对象的框架,该对象随程序执行而更新,并用于更新屏幕。我覆盖了JFrame#paintComponent(Graphics g),因此当我打电话给JFrame#repaint时,我的Frame被重画了。我知道我的框架不仅会在我调用其重绘方法时重绘,而且在调整大小后将其设置为可见(再加上一个我忘记了吗?)。我的框架无法调整大小,但是会最小化。问题是我只能在直接Controller调用期间确保repaint对象的稳定性。因此,我搜索并发现了JFrame#setIgnoreRepaint,但不确定不确定它的javadoc定义:

  

设置是否应忽略从操作系统接收到的绘制消息。这不会影响AWT在软件中生成的绘画事件,除非它们是对OS级绘画消息的立即响应。

您认为我可以使用它吗?还是危险

我概述了我的问题:我需要确保仅自动调用paintComponent / repaint,并且如果可以使用JFrame#setIgnoreRepaint来实现它。另外,永远不要让重画调用自动发生是可以的吗?

编辑:我一直在搜索,然后遇到一个话题(对不起,现在找不到了),有人在谈论RepaintManager#markCompletlyClean,这是否可以解决我的问题?

0 个答案:

没有答案