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

java - 为什么选择 SwingWorker?为什么不只是 Thread 或 Runnable?

使用SwingWorker代替Threador有什么好处Runnable

0 投票
3 回答
22175 浏览

java - 进度条可以在 main 之外的类中使用吗?

现在,我的 main 只调用了一个 10 行的 gui。根据这些行中有多少有文本,调用 9 个类中的 1 个(两行必须有文本)。被调用的类执行我希望将进度条绑定到的计算。这是一个被调用类的示例(每个类都相似,但差异足以保证一个新类。)我认为问题是违反 EDT 规则,但我在它们上看到的所有示例都涉及一个主要的争论。运行代码时会出现框架,但在所有计算完成之前进度条不会更新。

0 投票
2 回答
2089 浏览

java - 如何在事件调度线程中等到任务完成然后继续?

我有一个程序,一个游戏,带有用 Swing 制作的 GUI。

GUI 由我自己的类组成,它继承了 JFrame 并拥有一个带有 CardLayout 的 JPanel,它有多个 JPanel 作为卡片。

在其中一个面板上有一个开始游戏的按钮,游戏视图位于其中一张卡片上(视图对象具有自己的继承 JPanel 的类,在 JFrame 的构造函数中添加到卡片中) .

现在开场白:

我按下了 JButton,所以我跳转到 Event Dispatch Thread 执行 actionPerformed 方法。

在这种方法中,我首先翻转到包含视图面板的卡片,然后实例化我要玩的关卡和游戏引擎(根据关卡实例化)。然后我在视图对象上调用 repaint(最终应该在应用窗口中绘制游戏)然后我调用我的游戏引擎对象来启动游戏循环。

我的问题是:

当我按下按钮时,游戏引擎开始正常运行(我从控制台的打印中看到它),但我的 GUI 冻结并且不会刷新以显示游戏视图。当我删除启动游戏循环的代码片段时,游戏视图正常显示在屏幕上,但没有任何动作,因为游戏循环尚未启动。

所以我已经推断出,因为在 Java 中,一切都不会按照编写的顺序发生,游戏循环在 actionperformed 方法中的其他操作完成之前开始运行。

这是来自 actionperformed 方法的相关片段 kortti = card kentta = level valikkopaneeli = 具有卡片布局的面板 aloitusnappula = 开始游戏的按钮 Peli = 我创建的继承 JFrame 的类

CardLayout kortti = (CardLayout)valikkopaneeli.getLayout(); 肯塔肯塔 = 新肯塔(“testikentta.txt”);kortti.show(valikkopaneeli,“贝利”);Peli.this.pack(); Peli.this.setVisible(true); 阿洛伊塔(肯塔);}

这是 aloita(kentta) 方法的片段:

其中 Pelimoottori = 游戏引擎类 nakyma = 视图对象 peliLooppi() = 游戏引擎类中启动游戏循环的方法

如果我从 aloita 方法中删除 moottori.peliLooppi() 调用,游戏视图将正常显示。

我试图用谷歌搜索一些答案,而我得到的最远的方法是用 SwingWorker 做这件事,但不知何故,这听起来不像是做我想做的事的好方法。

有什么建议么?

0 投票
3 回答
839 浏览

java - 下载文件时java GUI冻结

在我的另一堂课中,我有一个事件监听器

当我单击 GUI 上的按钮时,它会冻结,并且标签和按钮在下载文件之前永远不会改变:

http://img200.imageshack.us/img200/2435/45019860.png

我必须在新线程上开始下载吗?如果我在新线程上启动它,是否仍然可以使用进度条?我对 java 还是很陌生,所以如果我做错了,我深表歉意。

0 投票
4 回答
2764 浏览

java - 从工作线程更新进度条

我正在构建一个从服务器下载 N 个元素的 java 程序。我想要一个工作进度条,显示“已经下载的元素”/N 百分比。现在,我通过向线程传递对 GUI 对象的引用来更新进度条值,但这会使代码“丑陋”(GUI 类创建线程,其中包含对 GUI 本身的引用,从而创建了一种循环)。有更好的方法吗?

0 投票
2 回答
271 浏览

java - 启动线程或执行计算的 SwingWorker 时的 Swing 伪块

我有一个非常简单的应用程序,它的行为非常奇怪。

它本质上是 SwingWorker 示例,但是当我按下按钮时,GUI 的行为就像 EDT 被阻止一样。我可以同时启动两个,它们并行运行(运行时间几乎相同),但菜单在它们运行时仍然冻结。当我使用带有可运行的线程时,会发生完全相同的行为。同样有趣的是,如果循环被 Thread.sleep 替换,GUI 会正常运行。

有任何想法吗?

0 投票
3 回答
877 浏览

java - Using Java Source Code in my own project

I wrote a program in Java 6.0, but it turns out that some of our client only have 5.0.

The issues is that lot of features that 6.0 has was not in 5.0 yet. For example:

  • JTable Sorting, Filtering feature
  • SwingWorker class

My Question is :

  1. is it legal to just copy the java 6.0 source code to my own project so that my client with 5.0 jre can run it.
  2. from technical point of view, is it hard to copy the classes source code like TableRowSorter, regexFilter to my own project and let it work?

Thanks

0 投票
1 回答
345 浏览

java - 实现 Java Swing 工作者的问题

我刚刚了解了执行摇摆后台任务,我开始尝试它,但我在实施时遇到了一点麻烦。我的代码检索图像并返回一个结果(整数),指示图像检索是成功结果 = 0 还是不成功结果 = -1。这是我的问题,我太快检索结果。在 done() 方法中读取结果后,我可以在下面的代码中看到 createImage 方法中的语句。我想我认为 done 方法在 createImage 完成之前不会执行。下面是我的代码:

0 投票
2 回答
251 浏览

java - SwingWorkers 停止工作

我有一个非常奇怪的问题。我正在使用 Swing 开发应用程序,当然我正在使用 SwingWorkers。他们一直工作到昨晚。我刚刚运行了程序,但工人们从一次运行到下一次停止工作。(我实际上没有更改任何一行代码)。昨晚是否有一些更新或其他事情可以解释这种奇怪的行为?

我在 OpenSuSE 11.1 机器上使用 JavaSE-1.6。我正在使用 Eclipse Galileo 进行开发。

0 投票
1 回答
1533 浏览

java - 为什么我的 Swingworker 只在第一次取消它的线程?

我有一个 Swingworker,有时我需要取消它。如果我执行然后取消,它会按预期工作。如果我运行该 Swingworker 的新实例,然后尝试取消它,则调用取消函数,它返回 true,但“doInBackground”方法完全运行而不会被取消。完全,我的意思是 Swingworker 线程运行的函数中的 while 循环完成(我只能在第一次取消)。

让我知道我是否清楚地说明了我的问题,这是一种我无法弄清楚的奇怪行为。

这是我的代码: