JPanel重写revalidate()

时间:2013-02-19 19:13:04

标签: java swing jpanel jlabel

对于我的程序,我有一个JPane随着游戏的进行,它会向面板添加标签,但是我可以让面板显示的唯一方法是使用add(label)然后重新验证,反之亦然用于删除标签。

我的问题是,一旦它达到我在屏幕上有超过40个标签的程度,revalidate必须处理太多的东西,所以如何覆盖revalidate(),以太工作,以便它仅重新验证添加的特定组件,而不是屏幕上的每个组件。我知道revalidate()方法中的某个循环会在所有组件的循环中运行,但我不能在我的生活中找到它。我希望能够致电revalidate(component-here)validate (component-here)并让它只更新该特定组件。

我知道还有其他方法可以编写这个程序,但我只对如何覆盖revalidate()感兴趣,所以没有“你可以用这种方式重做整个代码,这样只需6小时就可以了。” <”

http://www.fileserve.com/file/jFdQ6nv/FINAL_PROJECT.zip指向我的eclipse项目的链接,如果有人愿意提供帮助,我希望看到我真正在谈论的是什么

1 个答案:

答案 0 :(得分:1)

我刚尝试了这个example。添加1000个文本区域只需要一秒钟,并且即时更新。标签变得更快。你可能想看一些其他的东西减慢它。

另外,您可以查看CellRendererPane。它会覆盖invalidate()无所作为。

public void invalidate() {}