gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 04:53:01 24 4
gpt4 key购买 nike

我一次又一次地遇到了 Swing 一直遇到的问题。 Swing 不太适合处理自己的异步操作的程序员。

现在摆在我面前的是一个典型的问题,它经常被诸如“让 Swing 的 EDT 处理异步任务”或“稍后使用调用”之类的答案激怒。

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

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


问题

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

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

  • 如果没有常规方法,是否有针对我正在尝试做的事情的黑客、躲避或其他管道胶带解决方案?


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

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

最佳答案

使用SwingWorker为了这。在 doInBackground() 的实现中启动该过程。为工作人员提供对将从进程接收“异步更新事件”的监听器的引用。在监听器中,根据需要调用 publish() 以允许“被动查看不断变化的模型”。您的 process() 实现将在 EDT 的 sustainable rate 处被调用.可以看到几个例子here .

关于java - 在 Java Swing 中为多线程应用程序创建可视化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34732683/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com