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

java - SwingWorker 的原理是什么?

据我所知,它用于在 Swing 应用程序中调度一个新线程以执行一些“后台”工作,但是使用它而不是“普通”线程有什么好处?

使用新线程和使用 SwingUtilities.invokeLater 完成调用某些 GUI 方法时不一样吗?...

我在这里想念什么?

http://en.wikipedia.org/wiki/SwingWorker

http://java.sun.com/products/jfc/tsc/articles/threads/threads2.html

0 投票
2 回答
1199 浏览

java - 如何在 Swing 中最好地实现淡入淡出按钮效果?

我有一个JButton,当按下时,将背景颜色从活动更改为正常:

当特定任务完成执行时,我想将活动按钮颜色淡化回正常按钮颜色。我正在使用SwingWorker并想知道是否有人可以建议一种有效的方法来做到这一点?

编辑:为了清楚起见,我正在寻找一种有效的方法将 RGB 值淡化activeButtonColornormalButtonColor,而不必创建大量Color对象。是否可以?还是我只需要限制淡入淡出步骤的数量以提高效率?

0 投票
2 回答
1191 浏览

java - 将数据传递给 swingWorker?

在调用“swingWorker.execute”之前,有没有办法将数据(例如对象)传递给 swingWorker?

0 投票
2 回答
88940 浏览

java - 如何在 Java 中使用 SwingWorker?

与我之前的问题相关:从 Java 中的另一个类调用重绘?

我是 Java 新手,我看过一些关于 SwingWorker 的教程。但是,我不确定如何使用我在上一个问题中提供的示例代码来实现它。

谁能解释一下如何在我的代码片段中使用 SwingWorker 和/或向我指出一个体面的教程?我看过,但我不确定我是否理解。

0 投票
3 回答
1316 浏览

java - 我应该为此动画使用 SwingWorker、线程还是递归更新?

正如我在之前的问题中所说,我对 Java 还是很陌生。我正在用 Java 开发一个基于图块的游戏。运动在网格上。我正处于实施角色移动的阶段。

我的计划是使用我在这个问题中粘贴的代码。但是,这不起作用,我被告知应该使用 SwingWorker。

作为一个问题解决者,我这一天一直在思考这个问题,我有了一个想法。我可以通过做一些不同的事情来达到同样的效果。

我提到我有一个每 20 毫秒关闭一次的计时器,称为重绘。

我的想法是,我可以在计时器事件的重绘之前调用一个方法,这将使所有人更接近他们的目的地(下一个正方形/瓷砖)。那种东西行得通吗?在游戏后期,可能有 100 人左右。20 毫秒是否足以循环遍历所有人并将他们移动到离目的地更近的一个单元?20ms的时间太短了吗?我只是没有意义吗?

欢迎您的意见/答案/想法:)

0 投票
7 回答
9142 浏览

java - 使用 SwingWorker 时应该如何处理异常?

我在 Java 6 中使用 SwingWorker 以避免在事件调度线程上运行长时间运行的代码。

如果在我的 done() 方法中调用 get() 返回异常,那么处理异常的适当方法是什么?

我特别担心可能的 InterruptedExceptions。JavaDoc 示例只是忽略了异常,但多年来我了解到吞下异常会导致难以调试的代码。

示例用法如下:

0 投票
4 回答
2844 浏览

java - 调度 Swingworker 线程

我的 Swing 应用程序中有 2 个进程要执行,一个用于填充列表,一个用于对列表中的每个元素进行操作。我刚刚将 2 个进程移动到 Swingworker 线程中,以在执行任务时停止 GUI 锁定,并且因为我需要对多个列表执行这组操作,所以在第一个并发性上并不是一个坏主意地方。然而,当我刚跑

fillList.execute();
doStuffToList.execute();

doStuffToList 线程在空列表上运行(duh ...)。如何告诉第二个进程等到第一个进程完成?我想我可以将第二个进程嵌套在第一个进程的末尾,但我不知道,这似乎是一种不好的做法。

0 投票
5 回答
14488 浏览

java - 防止 Swing GUI 在后台任务期间锁定

我有一个存储对象列表的摇摆应用程序。当用户点击一个按钮时,

我想对列表中的每个对象执行两个操作,然后在完成后在 JPanel 中绘制结果。我一直在尝试 SwingWorker、Callable 和 Runnable 来进行处理,但无论我做什么,在处理列表时(可能需要几分钟,因为它是 IO 绑定的),GUI 被锁定。

我有一种感觉,这可能是我调用线程或其他东西的方式,还是与绘图功能有关?这不是线程,因为它非常快。

我也必须按顺序执行两个处理阶段,那么确保第二个处理阶段等待第一个处理阶段的最佳方法是什么?我使用了 join(),然后

尝试确保这一点,但我担心这也可能是我的问题的原因。

我一直在到处寻找一些指示,但是由于我找不到任何指示,所以我确定我在这里做了一些愚蠢的事情。

0 投票
2 回答
8366 浏览

java - Swing:无法让 JButton 更新 - repaint() 不起作用

我第一次使用 Swing 来创建一个简单的 GUI。它由一个JFrame我放置在其上的单个JButton组成,当单击它时,它会调用一些其他代码,该代码大约需要。3秒返回。

就在调用此代码之前actionPerformed(),我想更新按钮上的文本以通知用户正在进行处理。我的问题是按钮上的文本直到 3 秒调用返回后才会更新。我希望在通话期间出现更新的文本,然后我会在之后将其更改回来。

调用不会做任何事情,并repaint()在我单击按钮时抛出" " 的结果。JButtonJFrameException in thread "AWT-EventQueue-0" java.lang.NullPointerException

0 投票
3 回答
591 浏览

java - 摇摆应用问题

我正在开发 Swing 应用程序,通常一切正常。但我有一个 GUI 问题。

当我运行应用程序时,例如最小化其他一些窗口,我的应用程序仍在工作,但中心部分JFrame是不可见或隐藏的。在完成程序逻辑的某些部分后,GUI 重新绘制并再次可见。这将一直持续到程序完成运行。

是否有任何 API 可以防止这种行为,或者某些类可以强制 GUI 可见,或者可能添加一些进度条?

如果有人需要此信息,我将在 Windows Vista 上使用 java 1.6 进行测试。