我有一个java应用程序,它以可变的速率更新数据(从我无法控制的高速数据流中接收到数据,但高达120 K字节/秒),我想使用对话框显示像接收到的字节/数据包#这样的统计信息。
我正在研究JGoodies绑定,并得到了一些关于低速率接收的人工数据的初步工作。
大致上,我想做的是:
stats.update()
,其中调用"update“是触发GUI更改侦听器的原因是否有适当的机制让我为所欲为?我在看JGoodies DelayedReadValueModel,但我真的不知道如何使用它。
如果我必须亲自动手,我想我可能会做的是:
update()
方法时,设置update标志,并调用类似于maybePropagate()
的方法maybePropagate()
:如果计时器超时正在进行,或者镜像副本的链接为null,则不会执行任何操作;否则它将启动超时并将更新的数据发送到镜像副本,并清除更新标志。有什么建议吗?
发布于 2012-06-01 08:44:56
虽然JGoodies绑定通过延迟的*类解决了这个问题,但是您可以考虑使用一种具有标准Swing特性的方法。
如果使用SwingWorker,则可以在后台发布元素并在EDT中处理它们。SwingWorker流程将获取大量已发布的数据,并减少EDT更改的数量。
发布于 2011-02-03 20:33:36
如果您有了统计数据的表示模型,那么绑定代码可能如下所示:
ValueModel bytesModel = statsPresentationModel.getModel("bytes");
label = BasicComponentFactory.createLabel(bytesModel);
现在,为了延迟更新,您可以包装字节字段的值模型:
ValueModel bytesModel = new DelayedReadValueModel(statsPresentationModel.getModel("bytes"));
label = BasicComponentFactory.createLabel(bytesModel);
https://stackoverflow.com/questions/634798
复制相似问题