问题标签 [swingworker]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
8129 浏览

java - 在循环(线程)中制作 JProgressBar 更新值时出现问题

我试图让我的程序在执行某些操作时在方法中不断更新进度条值。然而,这直到最后才会发生,并且 UI 冻结。

在查看了与我的问题类似的问题后,我尝试实施公认的解决方案(使用线程),但是我无法让它正常工作。就像他们在哪里不在那里一样。

我的程序包含几个类,Main一个是由netbeans 在JFrame Design模式下自动创建的,所以有些东西,例如static void mainpublic Main并不确定它的某些内容。下面我将把这些方法的片段连同我的线程实现放在一起。

我评论的所有内容I added...都是我根据我在网上看到的教程和答案提出的,但似乎没有任何效果,感觉就像我尝试了近百万种不同的组合......

提前感谢您的帮助。

0 投票
1 回答
5180 浏览

java - 为什么我的 SwingWorker 线程在执行完毕后仍继续运行?

我正在为控制台应用程序实现 GUI,我需要在指定的时间间隔内执行一些操作(例如,解析 XML 文件)。我决定将 javax.swing.Timer 与 SwingWorker 一起使用,以确保这些操作不会使我的应用程序无响应。

我以这种方式实现了计时器:

...并按如下方式使用它:

一切都如我所愿。Timer 创建一个新的 SwingWorker 实例并执行它。工作人员完成后,将创建并执行新的工作人员。

我感到困惑的是,在工作线程完成后,我仍然可以在 Netbeans 的调试窗口(例如 SwingWorker-pool-3-thread-1)或 Windows 任务管理器(线程完成后运行线程不会减少)。SwingWorker 线程的数量限制为 10 个,但让它们运行让我很尴尬。

在简单线程使用的情况下:

该线程在执行后自动消失。

这种 SwingWorker 行为正常吗?

0 投票
2 回答
4097 浏览

java - 带有可更新 JProgressBar 的 Java Swing 线程

首先,我最近一直在使用 Java 的 Concurrency 包,但我发现了一个我被困住的问题。我想拥有和Application,并且Application可以拥有一个SplashScreen带有状态栏和加载其他数据的。所以我决定使用SwingUtilities.invokeAndWait( call the splash component here ). 然后SplashScreen出现一个JProgressBar并运行一组线程。但我似乎无法很好地处理事情。我已经查看SwingWorker并尝试将其用于此目的,但线程刚刚返回。这是一些伪代码。以及我想要达到的目标。

  • 有一个SplashScreen在加载信息时暂停的应用程序
  • 能够在多个线程下运行SplashScreen
  • 在所有线程完成之前,让 Update-able的进度条SplashScreen不退出。

启动闪屏

闪屏结构

我尝试了很多东西,包括SwingWorkers使用 CountDownLatch 的线程等。CountDownLatch 实际上以我想要处理的方式工作,但我无法更新 GUI。使用时,SwingWorkers要么invokeAndWait基本上无效(这是他们的目的),要么即使使用PropertyChangedListener. 如果其他人有一些想法,很高兴听到它们。提前致谢。

我实际上已经准备好发布更好的代码来帮助并找到我的解决方案。我感谢所有帮助过的人。

0 投票
2 回答
480 浏览

java - SwingWorker 的问题

我正在尝试让 SwingWorker 工作。我目前有以下代码:

我期待图像出现在 JLabel 中,但我只看到 JFrame 弹出。文件已正确加载我已经在另一个设置中进行了测试。任何指针?

0 投票
1 回答
506 浏览

java - Swing中的后台线程

我很茫然,一个简单的swing worker的使用。我在 doInBackground() 中添加了一些简单的代码,但它没有执行,我没有收到异常。当我使用调试器时,他正在正常工作。))可能有人有这样的事情,或者告诉我如何缓存这个错误的想法,或者......对不起,代码很复杂。告诉我你需要更多的东西或评论。如果我删除“installer.setFPS(fPSCalculatorGhost.getFPS());”-string,一切都会好起来的。

一切都围绕着 fpsTask-object。它由 interfaceUpdate-thread(或应用程序工作线程)使用,并由初始化它的其他线程使用。结果:1)。fpsTask-object 在一个线程中初始化 2)。fpsTask-object 给另一个线程赋值。

当我从 FPSCalculatorGhost 最终制作 fpsTask 时,它开始工作。

0 投票
2 回答
169 浏览

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

我已经实现了一个独立的 Java 应用程序,它使用 GUI 的 swing 框架。作为 GUI 的一部分,有一个 JTextArea 在单击按钮后出现,并且在后台处理作业后在 jtextarea 处附加一些文本。我正在使用 SwingWorker 库,因为我不希望我的 jtextarea 冻结应用程序并且它运行良好。所以作业代码位于覆盖的 doInBackground 内。

我面临的问题是当我将这个 GUI 应用程序作为 Eclipse 插件的一部分启动时。我已经用我的 Swing 应用程序构建了一个 jar,并且我已经向 Eclipse 工作台添加了一个扩展。在开始时,应用程序正确启动但是当应用程序流到了要调用swingworker的地步,这个特定的jtextarea被冻结了,什么也没发生。似乎我的Swingworker的doInBackground()函数中的代码没有被调用。我在 eclipse pugin 代码中启动应用程序,如下所示:

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

0 投票
1 回答
4578 浏览

java - MVC 进度条线程

我在设计中使用 MVC 模式,当用户按下搜索按钮时,我会在模型中调用搜索,但我还想使用从该模型返回的信息更新进度条。

我尝试过使用 swingworker,但进度条没有更新。我怀疑我的线程做错了什么。

我在控制器中定义的按钮是:

这将调用模型中的搜索并在视图中进行以下调用:

模型中定义的用于测试的虚拟函数:

0 投票
1 回答
1470 浏览

java - 在 MVC 中,模型做了什么,与 SwingWorker 有什么关系?

我阅读了很多关于 Java、Swing、MVC 和 SwingWorker 的内容,但我对模型在 MVC 中的作用完全感到困惑。

我正在构建一个有两个按钮的应用程序:

  1. 选择文件
  2. 读取文件

还有一个用于记录的文本框。

我目前在做什么:

  1. 视图包含小部件但没有逻辑
  2. 按钮的 actionPerformed() 方法调用 Controller 上的方法
  3. 控制器将获取所需的数据(包括显示 OptionPane.showOpenDialog())以获取文件
  4. 文件引用存储在模型中。
  5. 模型通知(PropertyChangeSupport,观察者模式)新文件的视图。
  6. 查看启用“读取文件”按钮

我的第一个问题:我应该将状态存储在模型中吗?也就是说,与操作顺序相关的信息:首先必须选择一个文件,然后才能读取它。那么我的模型将成为一个状态机。

我的第二个问题:我让 Controller 显示 OptionPane 是否正确?

然后乐趣开始。用户单击“读取文件”按钮。我所做的与“选择文件”按钮大致相同。View 调用 Controller,但 Controller 使用 SwingWorker 来读取文件,因为这不应该在 EDT 上完成。SwingWorker 发布中间日志消息,这些消息通过对 View 的引用(SwingWorker.process() 方法)添加到文本框。控制器监听来自 SwingWorker 的“状态”属性变化。当“状态”为“完成”时,控制器调用“get()”函数。如果一切正常,则在模型中设置结果。如果不是,则处理异常。

我的第三个也是最重要的问题:模型不应该读取文件吗?!MVC 的重点是关注点分离,以及所有好处(可测试性等)。如果我想要一个新视图(例如 CLI)怎么办?那么我的模型现在只是一个数据模型。它不知道如何读取文件!那么线程问题呢?

希望你能给我一些好的建议。互联网上有大量关于 SwingWorker、MVC 等的示例。但我的问题不是如何针对它们进行编码,而是如何设计。

0 投票
1 回答
157 浏览

java - SwingWorker 任务上的 execute() 的奇怪结果

Java新手在这里...小心!

我以这个例子为基础设置了这个练习应用程序。不幸的是,我遇到了问题。如果我只是运行该程序,SwingWorker 任务适用于非常小的数据集,但只会在较大的数据集中部分停止。我知道这个应用程序不是最有效的,但我无法弄清楚它为什么会停止(甚至在哪里停止)。

我已经把代码放在这里了

提前致谢。

0 投票
2 回答
809 浏览

java - 在调用既访问 Swing 组件又耗时的方法时,防止 Swing GUI 变得无响应

以下行:

使我的 GUI 无响应。

当调用此方法更新大部分 GUI 上的 laf 时,会花费大量时间,因此在此操作期间会使 GUI 无响应。

由于此操作正在操作 GUI,因此也不能为此使用 SwingWorker。从 SwingWorker 文档:

  • 不应在事件调度线程上运行耗时的任务。否则应用程序变得无响应。

  • Swing 组件只能在 Event Dispatch Thread 上访问。

但这里的问题是该操作正在访问 Swing 组件并且非常耗时。

有没有防止这种反应迟钝的好方法?