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

java - Java Swing BasicUI update error, what can I do?

My program uses Swing JPanel, JList, JScrollPane ...

It runs fine, but generated the following error message, and yet in the message it didn't say which line of my program caused the error, what can I do ?

=========================================================================

=====================================================================================

I do have various .validate() and .repaint() statements in my program to make sure it runs correctly. Because my program looks fine, does that mean I can ignore the error ? Anything I can do to avoid the error message ?

===================================================================================== Here is more details:
<1> Java version jdk1.6.0_11
<2> How I init the list:

Yishai is right, since my program needs to init a very long list, which requires about a minute. I can't wait to see the UI before the init is finished, so I put it in a "SwingWorker" class and let it do the init after the app UI window opens; that way I can see the progress from within the UI rather then wait for the first window to open. It seems to me it's the PC's slowness that's messing up the UI update process; if I later on move to a faster machine, Swing should straighten this out, or am I right about this?

I tried to use the "(wrap the change in a Runnable and call SwingUtilities.invokeLater)" approach, but it didn't work as I expected. It waits till all the list is filled in, then opens the first window; that means I have to look at empty screen for one minute before the first UI shows up.

With SwingWorker, it now shows the error message randomly--sometimes here, sometimes there, other times not at all.

My SwingWorker looks like this :

0 投票
3 回答
427 浏览

java - Swing:将值从预定线程传回 UI

我有一个 Java 系统托盘 UI,需要计划数据库轮询。生成新线程并通知 UI 的最佳方法是什么?

我是 Swing 的新手,它是线程模型。

0 投票
4 回答
2705 浏览

java - JDK-7 SwingWorker 死锁?

我有一个小型图像处理应用程序,它使用 SwingWorker 一次执行多项操作。但是,如果我运行以下代码(过于简化的摘录),它只会挂在 JDK 7 b70(Windows)上,但可以在 6u16 中运行。它在另一个工作人员中启动一个新工作人员并等待其结果(真正的应用程序运行多个子工作人员并一直等待)。我在这里使用了一些错误的模式吗(因为在 swingworker-pool 中大多数有 3-5 个工人,我认为限制为 10 个)?

0 投票
3 回答
1631 浏览

java - javax.swing.SwingWorker 中的问题

我做了一个swings应用程序,但是有一个问题如下:

我从 Event Dispatch Thread 启动了一个名为“Thread-Main”的 SwingWorker 线程,并将 GUI 的 JLabel 引用传递给了“Thread-Main”。

现在我已经从“Thread-Main”启动了 10 个线程。

现在我希望所有 10 个线程都应该更新 JLabel。

我怎样才能做到这一点?

有人告诉我,我可以通过首先将所有 10 个线程创建为 SwingWorker 的子类,然后调用 publish("") 方法并将字符串传递给该“发布”方法,然后通过以下方法收集所有已发布的字符串“线程主”

  1. 上述方法是否正确?
  2. 这 10 个线程应该是 SwingWorker 的子类吗?
  3. 有没有其他方法可以做到这一点?
0 投票
5 回答
333 浏览

java - 什么应该是在 SwingWorker 线程中执行的“长时间运行的任务”?

我知道如何使用 SwingWorker 线程,但我仍然没有准确的标准来决定何时使用或不使用。

I/O 看起来很明显,但是在潜在的大集合上运行的方法呢?

标准可能是实际运行时间,但什么样的数字(以毫秒为单位)才符合条件?

0 投票
1 回答
3200 浏览

java - Java SwingWorker 挂起

我正在调试一些使用 SwingWorker 编写的代码,以执行数值计算和 GUI 更新的混合。SwingWorker 挂起并显示以下堆栈跟踪:

$Worker.run(ThreadPoolExecutor.java:908) 在 java.lang.Thread.run(Thread.java:619)

我的理解是 GUI 工作不应该在 doInBackground() 中完成,而应该在 done() 中完成。我进行了一个天真的实验,我将 doInBackground() 中的所有代码移到了 done() 中,但它仍然不起作用。人们有什么建议可以告诉我我可以做些什么来解决这个问题吗?代码如下所示:

另一个线索是有两个 SwingWorker 线程在执行。他们可以运行相同的线程吗?

更新:这是执行 SwingWorker 的代码:

public final void animate(final long delayBetweenUpdatesMilliseconds, final List modelIndices, final boolean keepTrace, final List propertyChangeListeners) {

}

0 投票
2 回答
2740 浏览

java - Swing Worker 模式对话框不会关闭

我有一个 SwingWorker 线程,它启动一个模式对话框(从一个侦听已启动 StateValue 的属性更改侦听器),并且 swing Worker 继续执行其工作。但是,看起来 done 方法没有被调用,因为在 EDT 上调用了该方法,但是 swing worker 的模态对话框阻塞了 EDT。因此,我无法从 EDT(或 done 方法)关闭对话框。现在,我只是在该方法结束时从 doInBackground 关闭对话框,但这对于 doInBackground 似乎有点不安全,因为它不在 EDT 上。处理这个问题的最佳方法是什么?谢谢。

0 投票
4 回答
846 浏览

java - 制作Java版本的记事本,我有问题

我正在尝试加载所有类型的文件(如 Microsoft 记事本)。我拥有的 SwingWorker 可以很好地加载普通文本,但是当尝试加载 mp3、pdf 等文件时,我会收到 NullPointerException。

有人可以看看我的代码,并可能了解为什么我不断收到 mp3、pdf 等文件的此错误吗?就像我说的那样,我可以加载没有任何错误的普通 .html 纯文本文件。

这是我将代码转换为后得到的:

这是来自 Netbeans 的“堆栈跟踪”(我认为):

我已将代码更改为:

我仍然收到 NPE。

0 投票
3 回答
2985 浏览

java - Java 输入阅读器。检测正在读取的文件是否是二进制文件?

我已经发布了关于此代码的问题。我发现 JTextArea 不支持加载的二进制类型数据。

所以我的新问题是如何检测“坏”文件并取消文件 I/O 并告诉用户他们需要选择一个新文件?

0 投票
4 回答
2197 浏览

java - 如何命名 SwingWorker 线程?开放代码或最佳实践

我正在尝试调试 SwingWorker 线程中发生的可怕异常。如果我可以命名我的 SwingWorker 线程,那么我可以更好地解释我收到的堆栈跟踪。

似乎无法命名 SwingWorker 线程(是吗?)。我正在寻找任何最佳实践或“技巧”来帮助我正确识别我的工作线程,而不仅仅是在我的代码中添加日志语句。