2010-10-31 77 views
1

重新绘制一个JPanel的内容我有一个JPanel,里面包含了很多的子组件。在更新\向父级JPanel添加新组件时,我想阻止它重新绘制,如何实现?阻止Java,同时更新

+1

我从来没有注意到显著延迟。你能提供一个sscce http://sscce.org/来证明问题吗? – trashgod 2010-10-31 22:31:21

+0

我同意trashgod,我从来没有见过这个问题。组件不会被绘制,因为它们被添加到面板中,因为默认情况下它们具有0大小,所以没有任何绘画。这些组件将只涂调用panel.revalidate()之后,因为这将调用这反过来又勾画出的组件,并给他们一个尺寸布局管理器。如果你正在做一些奇怪的事情,那么我们需要一个SSCCE来理解你在做什么。 – camickr 2010-11-01 04:33:53

回答

1

您可以通过使用setIgnoreRepaint(boolean value)尝试,但它是一个典型的摇摆功能,可以或不能工作(主要是因为它从AWT依赖,所以你永远不知道)。

否则,您可以覆盖paint方法,方法是使用一个标志,该标志仅在不调用super.paint()的情况下返回方法。 (实际上重写paintComponent应该是正确的选择)

+0

'setIgnoreRepaint(布尔值)'是完全不同的东西。 Java Doc说:'设置是否应该忽略来自操作系统的绘制消息。这不会影响AWT在软件中生成的绘画事件,除非它们是对OS级别绘画消息的即时响应。 例如,如果在全屏模式下运行并希望获得更好的性能,或者如果使用页翻转作为缓冲策略,则这很有用。 – 2014-05-21 14:17:32

2
setVisible(false) 

更新

setVisible(true)