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

标签 java user-interface swing properties visitor-pattern

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

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

最佳答案

重绘请求被传递到 RepaintManager,后者又将多个请求合并为单个重绘。

我觉得很奇怪,你有 1000 个单一表单的字段。假设这确实是真的,那么我怀疑所有 1000 个是否会同时可见。我相信 RepaintManager 只会绘制那些可见的部分,因此开销可能不会像您想象的那么糟糕。

我不知道有什么方法可以停止重新绘制,但也许您可以使 Pane 不可见,进行更新,然后使其再次可见。

或者也许您可以创建一个不执行任何操作的自定义 RepaintManager。您安装它,进行更新,然后重新安装默认管理器。

关于java - 有关通过 PropertyChangeSupport 更新 Swing GUI 的设计问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4091799/

相关文章:

c++ - QT多线程和更新GUI

java - 禁用 Netbeans GUI 中的按钮,直到将正确的密码输入密码字段

javascript - 单击以在两个列表之间交换元素

java - 遍历一组复选框

java - 调整 JOptionDialog 的大小以适应其中的内容

java - 在 Java 中绘制谢尔宾斯基三角形

java - 使用相同的字符串部分进行正则表达式检查

java - 使用扫描仪的 RPN 计算器,If/Else 语句不读取

java - 使用 deployJava.js 检查/自动安装 Web 小程序的最新 JRE 版本

java - 为 ArrayList 创建 setter