【问题标题】:JPanel overriding revalidate()JPanel 重写 revalidate()
【发布时间】:2013-02-04 14:36:10
【问题描述】:

对于我的程序,我有一个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 项目的链接,如果有人想提供帮助想看看我到底在说什么

【问题讨论】:

  • validate() 在容器类中。

标签: java swing jpanel jlabel


【解决方案1】:

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

另外,您可以查看CellRendererPane。它会覆盖 invalidate() 以不执行任何操作。

public void invalidate() {}

【讨论】:

  • 在我的游戏中,这是一个小行星游戏,所以我有很多标签四处移动,射击和垃圾
  • 抱歉,我只看过绘制形状的小行星游戏。
猜你喜欢
  • 2011-09-08
  • 1970-01-01
  • 1970-01-01
  • 2013-02-11
  • 2015-01-09
  • 2010-11-09
  • 2020-02-12
  • 1970-01-01
相关资源
最近更新 更多