繁体   English   中英

在Java Swing中为多线程应用程序创建可视化

[英]Creating a visualization for a multi-threaded application in Java Swing

我遇到了Swing一次又一次遇到的问题。 对于处理自己的异步操作的程序员来说,Swing并不是很好。

现在,在我面前,我有一个典型的问题,经常会被“让Swing的EDT处理异步任务”或“稍后使用调用”这类答案所引发。

通常,如果我从头开始构建整个应用程序,那将是一种方法。 但是,我不是。 我目前拥有的是一个程序(我不应该以任何方式修改)在自己的线程中运行并触发其自己设计的异步更新事件。 我想使用Swing为它创建一个UI包装器,在面板中显示应用程序,同时提供与底层程序交互的按钮。

现在,我真的不想失去我的头发。 我不打算在没有进展的情况下正面解决这个问题几个小时。 如果没有出现这个问题的可接受的答案,我将简单地使用一个OpenGL包装器(这是“简单”)。


问题

  • 是否有传统的方法在Java Swing中包装这种性质的多线程应用程序?

  • 该方法是否允许被动查看不断变化的模型? (没有UI鼠标或键盘事件,但它仍然更新)

  • 如果没有传统的方式,是否有黑客,躲避或其他胶带解决方案,我正在尝试做什么?


无法识别应用程序的异步部分在另一个程序中并建议修改该程序的答案将被视为非建设性的,并将被标记为偏离主题。

如果您需要其他信息,请发表评论,我会尽可能地披露。

使用SwingWorker进行此操作。 doInBackground()实现中启动该过程。 为worker提供对将从进程接收“异步更新事件”的侦听器的引用。 在监听器中,调用publish()作为保证允许“被动查看更改的模型”。 您将以可持续的速度在EDT上调用您的process() 实现 这里可以看到几个例子。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM