首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jgoodies绑定+合并频繁的更改

jgoodies绑定+合并频繁的更改
EN

Stack Overflow用户
提问于 2009-03-11 14:40:45
回答 2查看 283关注 0票数 3

我有一个java应用程序,它以可变的速率更新数据(从我无法控制的高速数据流中接收到数据,但高达120 K字节/秒),我想使用对话框显示像接收到的字节/数据包#这样的统计信息。

我正在研究JGoodies绑定,并得到了一些关于低速率接收的人工数据的初步工作。

大致上,我想做的是:

  1. 创建一个bean类,如下所示: 公共类统计信息{私有int字节;私有int goodPackets;私有int badPackets;私有int totalPackets;公共int getBytes() {返回字节;} public int getGoodPackets() {返回goodPackets;} public int getBadPackets() {返回badPackets;} public int getTotalPackets() {返回totalPackets;}公共空更新( /* TBD */) {/*适当地更新字段*/ }公共统计数据{ bytes=goodPackets=badPackets=totalPackets=0;}
  2. 将这4个字段绑定到我的GUI中的元素
  3. 能够在我的主应用程序线程中以任何必要的速度调用stats.update(),其中调用"update“是触发GUI更改侦听器的原因
  4. 让GUI“自动”更新,以更低的速度,我可以指定,大约5-20赫兹,所以它不会被大量的触发事件淹没。

是否有适当的机制让我为所欲为?我在看JGoodies DelayedReadValueModel,但我真的不知道如何使用它。

如果我必须亲自动手,我想我可能会做的是:

  1. 拥有统计信息的镜像副本,并添加某种更新标志,以及从原始副本到镜像副本的链接,以及计时器超时
  2. 调用update()方法时,设置update标志,并调用类似于maybePropagate()的方法
  3. maybePropagate():如果计时器超时正在进行,或者镜像副本的链接为null,则不会执行任何操作;否则它将启动超时并将更新的数据发送到镜像副本,并清除更新标志。
  4. 当计时器超时过期时,如果设置了update标志,并且镜像副本的链接为非空,则它将更新的数据发送到镜像副本并清除更新标志。
  5. 在实现了前面的4个元素之后,镜像副本具有最大的更新速率,因此我只需使用常规的JGoodies BeanAdapter将镜像副本的字段绑定到镜像副本的字段。

有什么建议吗?

EN

回答 2

Stack Overflow用户

发布于 2012-06-01 08:44:56

虽然JGoodies绑定通过延迟的*类解决了这个问题,但是您可以考虑使用一种具有标准Swing特性的方法。

如果使用SwingWorker,则可以在后台发布元素并在EDT中处理它们。SwingWorker流程将获取大量已发布的数据,并减少EDT更改的数量。

票数 3
EN

Stack Overflow用户

发布于 2011-02-03 20:33:36

如果您有了统计数据的表示模型,那么绑定代码可能如下所示:

代码语言:javascript
运行
复制
ValueModel bytesModel = statsPresentationModel.getModel("bytes");
label = BasicComponentFactory.createLabel(bytesModel);

现在,为了延迟更新,您可以包装字节字段的值模型:

代码语言:javascript
运行
复制
ValueModel bytesModel = new DelayedReadValueModel(statsPresentationModel.getModel("bytes"));
label = BasicComponentFactory.createLabel(bytesModel);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/634798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档