2

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

我主要担心的是,每当数据包到来时,都会触发 1,000 个 PropertyChangeEvent,从而导致 1,000 个 .repaint()(或 .revalidate() 或其他)。更谨慎的方法似乎是做类似“gui.stopRepainting(); fireAllThePropertyEvents(); gui.restartPainting();”之类的事情。有没有办法做到这一点,或者有没有更好的方法来处理这个?

4

1 回答 1

3

重绘请求被传递给 RepaintManager,RepaintManager 又将多个请求组合成一个重绘。

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

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

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

于 2010-11-03T21:46:58.900 回答