问题标签 [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 投票
1 回答
2476 浏览

java - JTable在自动刷新方案上插入数据

我有这个 JTable,我在其中实现了自动刷新功能,以每 1 分钟或(60000l)显示剩余时间。

但是当要插入的行还没有完成时我遇到了这个问题(数据编码是在 JTable 本身上完成的)数据丢失了。为了防止任何数据丢失,并且不删除自动刷新功能。

是否可以暂停线程(SwingWorker(Void, Void) 用于自动刷新功能)以让插入/更新数据不会丢失?

0 投票
3 回答
1243 浏览

java - Java Swing Worker 和组合框问题

我正在使用 Swing 构建一个使用数据库的应用程序。我有一个奇怪的问题,我不明白如何解决。

在某个面板中,我有一个组合框,我想使用数据库查询填充记录。在完成构建包含组合框的 JPanel 之后,我正在执行一个 Worker

doInBackground执行 SELECT 查询,并在获得结果后 - 在 Worker 的done()方法中 - 更新面板的模型并调用面板的refreshFromModel.

refreshFromModel执行以下操作:

现在,问题是,在它完成 refreshFromModel 之后 - GUI 卡住/冻结。我不知道为什么!奇怪的是,在不同的框架中,我使用了相同的方法——而且它没有问题

此外,如果我尝试removeAll而不是removeAllItems它可以工作,但 ComboBox 会丢失它的箭头并且行为怪异。

我已经在调试器中进行了帧跟踪 - 那里有 removeSourceEvent 或 Unsafe.park 之类的东西。

非常感谢。

0 投票
4 回答
2004 浏览

java - 使用计时器启动 SwingWorker?

我需要执行的任务包括从外部服务器请求一些数据,对数据执行一些(相当长的)处理,然后使用处理结果更新 GUI。因为服务器可能没有响应,所以该任务非常适合 SwingWorker:该doInBackground()方法获取结果,然后 done 方法更新 GUI。

我需要每隔几秒钟发生一次。我知道我可以只使用 while 循环和 Thread.sleep,并在每次睡眠后创建一个新的 SwingWorker。但是我读过的所有内容都对使用循环和睡眠不满意。我想使用计时器,但是:

  • 使用摇摆计时器似乎适得其反;因为它们在 EDT 上运行,我基本上没有理由使用 SwingWorker 的 doInBackground 方法。如果服务器没有响应,则 GUI 将没有响应。

  • 使用 java.util.Timer 似乎有点浪费:它似乎为 TimerTask() 创建了一个后台线程,并且由于我只是创建一个 SwingWorker 来完成实际工作,因此我实际上是在创建一个后台线程来创建另一个后台线程。

谁能告诉我最好的解决方案是什么?我想坚持使用 SwingWorker,因为它似乎非常适合这项任务,但如果我能提供帮助,我想避免使用 while 循环。

谢谢

0 投票
6 回答
17288 浏览

java - 如何取消 SwingWorker 的执行?

目前我有两个 SwingWorker 线程在后台工作。如果发生异常,该方法停止工作,但线程仍在运行。

doInBackground()如果发生异常,我如何停止执行并杀死线程?

this.cancel(true)不要破坏/关闭线程。我怎样才能做到这一点?

我在 Netbeans 的调试中看到了这些线程。

0 投票
2 回答
475 浏览

java - 使用 Java Swing worker 作为单例在后台备份应用程序数据

我打算使用 Java SwingWorker 作为单例在后台定期备份应用程序数据(可能与 Swing 计时器或 java.util.Timer 结合使用)
这样的策略听起来吗?将 Singleton 应用于 SwingWorker 是个好主意吗?

0 投票
5 回答
4481 浏览

java - 如何在 Java 中与两(2)个 SwingWorker 类共享数据

我有两个 SwingWorker 类:FileLineCounterThreadFileDivisionThread

我将执行这两个线程。当行计数线程完成时,它将结果传递给文件分割线程。

我不知道如何将结果传递给启动的线程。

0 投票
6 回答
17431 浏览

java - SwingWorker:何时调用 done 方法?

done()方法的JavadocSwingWorker:

doInBackground 方法完成后在事件调度线程上执行。

我有线索表明在被取消的工人的情况下这是不正确的。
Done在每种情况下(正常终止或取消)都被调用,但是当cancelled没有加入 EDT 时,就像正常终止一样。

done在取消a 的情况下何时调用是否有更精确的分析SwingWorker

澄清:这个问题不是关于如何. 这里假设以正确的方式取消。 这与线程在应该完成时仍在工作无关。cancelSwingWorkerSwingWorker

0 投票
2 回答
1548 浏览

java - 睡在 SwingWorker 里?

我需要在一段时间内将测试数据提供给 Swing 间隔。数据集解析很长,所以我SwingWorker在后台使用a来解析它。在将数据提供给 GUI 时(例如,每秒一个项目),我可以从 开始TimerSwingWorker但这似乎有点过头了。有什么理由不从内部睡觉SwingWorker

干杯

0 投票
1 回答
1334 浏览

java - Java SwingWorker - 使用发布/进程更新 EDT 中的 TextArea?

我刚刚编写了一个启动 SwingWorker(运行 Socket 服务器)的 Swing 程序。我在 Swing GUI 上有一个 JTextArea,它使用 JTextArea.append(String) 使用 Socket 服务器接收到的数据进行更新。

在 Swing GUI 上更新 JTextArea 是否正确/线程安全?使用发布/流程怎么样?

0 投票
3 回答
810 浏览

java - 当我取消 SwingWorker 时,Java SwingWorker 套接字服务器不会被取消

我有一个作为 Java SwingWorker 运行的 Socket 服务器。

SwingWorker 接收传入的连接,并在连接后将套接字移交给负责连接的 Executor。Executor 调用一个 SocketHandler,它将通过 run() 方法处理套接字。

现在,我在 GUI 上有一个按钮,上面写着停止。当我按下停止按钮时,我想停止 SwingWorker 的执行。为此,我在按下停止按钮时调用了一个 cancel(true) 方法。

现在,尽管我的程序调用了 cancel(true) 方法,SocketHandler 仍继续接收传入数据。这里发生了什么?

我已经阅读了几篇文章,这是 JDK 中的一个错误,即调用 cancel(true) 方法不会停止 SwingWorker。这是真的?