java - 为什么 Eclipse 插件代码无法从外部 java swing 应用程序调用 swingworking 线程?

标签 java eclipse swing swingworker

我已经实现了一个独立的java应用程序,它使用GUI的swing框架。作为GUI的一部分,有一个JTextArea,它在单击按钮后出现,并且在处理作业后在jtextarea中附加一些文本我正在使用 SwingWorker 库,因为我不希望我的 jtextarea 卡住应用程序并且它工作得很好。所以作业代码位于重写的 doInBackground 内。

我面临的问题是当我作为 Eclipse 插件的一部分启动这个 GUI 应用程序时。我已经用我的 swing 应用程序构建了一个 jar,并且向 Eclipse 工作台添加了一个扩展。一开始应用程序启动了正常,但是当应用程序流程到达调用 swingworker 时,这个特定的 jtextarea 被卡住并且没有任何反应。看来我的 Swingworker 的 doInBackground() 函数内的代码没有被调用。 我在 eclipse pugin 代码中启动应用程序,如下所示:

SwingUtilities.invokeLater(new Runnable() {public void run() {
              new MainFrame.setVisible(true);
          }
      });

其中MAinFrame是java程序的JFrame类。 你知道为什么会这样吗?

最佳答案

在同一进程中混合 SWT 和 AWT/Swing UI 并不容易。它们需要不同的事件循环。您的代码卡住是因为 Awt/Swing 事件循环未在 Eclipse 进程中运行。您可以使用 SWT 重写 UI 或研究 SWT-AWT 桥接器。这座桥“可以工作”,但存在许多故障。它实际上只适用于 AWT/Swing 数量巨大且需要临时解决方案而将 UI 移植到 SWT 的情况。

关于java - 为什么 Eclipse 插件代码无法从外部 java swing 应用程序调用 swingworking 线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5469972/

相关文章:

java - 捕获Java中的方法调用

java - 测试基于控制台的应用程序/程序 - Java

java - 使用 Eclipse 从 JAR 构建中排除文件

java - 使用 Eclipse 和 IBM BlueMix Tools 发布应用程序永远无法完成

java - JTextPane 中的双列表项插入

java - 除非先单击 JButton,否则 keyPressed 不起作用

java - 如何创建一个接受字符串并返回字符串中第二个字符的函数?

java - 如何在不使用 Thread.sleep 命令的情况下执行 akka actor 中的整个代码?

java - 当部署到 Eclipse 中的 Tomcat 时,Spring Boot 应用程序不会启动

java - 无法启动 Swing 计时器