在过去,我使用PCS来更新Swing元素,这些元素显示了某些字段,一切都如预期的那样工作。然而,我现在面对的是一个相对复杂(换句话说,设计得很糟糕)的UI,它显示了很多字段。数据更新是成批进行的(一个包含大约1000个字段的新值的网络数据包),我想知道处理这种情况的正确方法是什么。
我主要担心的是,每当一个数据包到来时,1000个PropertyChangeEvents被触发,导致1000个.repaint()(或.revalidate())或其他任何东西。更谨慎的方式似乎是做一些类似"gui.stopRepainting();fireAllThePropertyEvents();gui.restartPainting();“的事情。有没有办法做到这一点,或者有没有更好的方法来处理这个问题?
发布于 2010-11-04 05:46:59
一个重绘请求被传递给RepaintManager,它又将多个请求组合成一个重绘。
我觉得很奇怪,你有1000个字段,只有一个表单。假设这是真的,那么我怀疑所有1000个都将同时可见。我相信RepaintManager只会绘制那些可见的,所以开销可能不会像你想象的那么糟糕。
我不知道有什么方法可以停止重新绘制,但也许你可以让窗格不可见,进行更新,然后让它再次可见。
或者,您可以创建一个自定义的RepaintManager,它什么也不做。你安装它,做你的更新,然后重新安装默认管理器。
https://stackoverflow.com/questions/4091799
复制相似问题