对于我的程序,我有一个JPane随着游戏的进行,它添加标签到面板,但我唯一能让面板显示的方法是使用add(label)然后重新验证,反之亦然,删除标签。
我的问题是,一旦它达到我在屏幕上有40多个标签的程度,重新验证就必须处理太多的事情,所以我如何重写revalidate(),ether工作,以便它只重新验证添加的特定组件,而不是屏幕上的每个组件。我知道在revalidate()方法中的某个地方有一个循环,它将贯穿所有组件的循环,但我就是一辈子都找不到它。我希望能够调用revalidate(component-here)validate (component-here)并让它只更新特定组件。
我知道还有其他方法可以编写这个程序,但我只对如何重写revalidate()感兴趣,所以没有“你可以这样重做你的整个代码,这应该只需要你6个小时>”。
http://www.fileserve.com/file/jFdQ6nv/FINAL_PROJECT.zip一个指向我的eclipse项目的链接,如果有人想帮忙的话,可以看看我到底在说什么

最佳答案

我刚试过这个。添加1000个文本区域只需要一秒钟,而且更新是即时的。标签走得更快。你可能想看看别的什么东西来减缓它。
此外,您还可以查看CellRendererPane。它覆盖invalidate()而不执行任何操作。

public void invalidate() {}

10-04 18:09