通过PropertyChangeSupport设计有关Swing GUI更新的问题

时间:2010-11-03 21:19:34

标签: java user-interface swing properties visitor-pattern

过去我使用PCS来更新显示某些字段的Swing元素,一切都按预期工作。但是,我现在面临着一个相对复杂(换句话说,设计非常糟糕)的UI,它显示了很多字段。数据更新是串联的(包含大约1,000个字段的新值的网络数据包),我想知道处理这样的事情的正确方法是什么。

我主要担心的是,无论何时数据包到来,都会触发1,000个PropertyChangeEvents,导致1,000 .repaint()(或.revalidate()或其他)。更谨慎的做法似乎是“gui.stopRepainting(); fireAllThePropertyEvents(); gui.restartPainting();”。有没有办法做到这一点,还是有更好的方法来解决这个问题?

1 个答案:

答案 0 :(得分:3)

将重绘请求传递给RepaintManager,后者又将多个请求合并为一个重绘。

我觉得很奇怪你有1000个单一形式的字段。假设这实际上是真的那么我怀疑所有1000将同时可见。我相信RepaintManager只会绘制那些可见的,所以开销可能没有您想象的那么糟糕。

我不知道有什么方法可以阻止重绘,但也许你可以让窗格隐身,进行更新,然后让它再次可见。

或许你可以创建一个自定义的RepaintManager,什么都不做。您安装它,进行更新,然后重新安装默认管理器。