3

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

我的问题是,一旦我在屏幕上有超过 40 个标签,重新验证必须处理太多的事情,那么我如何覆盖revalidate(), ether 工作,以便它只重新验证添加的特定组件,而不是屏幕上的每个组件。我知道revalidate()方法中有一个循环将贯穿所有组件的循环,但我终生无法找到它。我希望能够调用revalidate(component-here)validate (component-here)让它只更新该特定组件。

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

http://www.fileserve.com/file/jFdQ6nv/FINAL_PROJECT.zip一个指向我的 Eclipse 项目的链接,如果有人想提供帮助想看看我到底在说什么

4

1 回答 1

1

我刚试过这个例子。添加 1000 个文本区域只需一秒钟,并且更新是即时的。标签走得更快。你可能想看看其他东西减慢它。

另外,你可以看看CellRendererPane. 它覆盖invalidate()什么都不做。

public void invalidate() {}
于 2013-02-20T13:27:24.290 回答