现在,我的main只调用了一个10行的gui。根据这些行中有多少有文本,调用9个类中的1个(两行必须有文本)。被调用的类执行我希望将进度条绑定(bind)到的计算。这是一个被调用类的示例(每个类都相似,但差异足以保证一个新类。)我认为问题是违反EDT规则,但我在它们上看到的所有示例都涉及一个主要的争论。代码运行时会出现框架,但在所有计算完成之前进度条不会更新。importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclasstwoLoanextendsJFrame{staticJFrameprogressFra
我正在为控制台应用程序实现GUI,我需要在指定的时间间隔内执行一些操作(例如,解析XML文件)。我决定将javax.swing.Timer与SwingWorker一起使用,以确保这些操作不会使我的应用程序无响应。我是这样实现定时器的:publicclassDataUpdateTimerextendsTimer{privateStringdataFlowControllerXML=null;privateDataUpdateWorkerdataUpdateWorker=null;publicclassDataUpdateWorkerextendsSwingWorker{privateSt
我有两个SwingWorker类:FileLineCounterThread和FileDivisionThread我将执行这两个线程。当行数统计线程结束时,它将结果传递给文件划分线程。我不知道如何将结果传递给启动的线程。 最佳答案 importjava.awt.BorderLayout;importjava.awt.Color;importjava.awt.Dimension;importjava.awt.GridLayout;importjava.awt.event.ActionEvent;importjava.beans.Pro
假设我有以下代码:importjava.lang.InterruptedException;importjavax.swing.SwingWorker;publicclassTest{privateJDialogwindow;publicTest{//instantiatewindow}privateclassTaskextendsSwingWorker{publicVoiddoInBackground(){try{Thread.currentThread().sleep(5000);}catch(InterruptedExceptione){}returnnull;}}publicv
我制作了自己的SwingWorker示例以熟悉它的工作原理。我想做的是:单击按钮时,我希望在任务完成之前出现一个进度条。我想简单地删除进度条并向对话框添加一个字符串。单击按钮时,进度条会出现但不会消失。(永远不会在10秒后删除进度条并且永远不会放置标签)这是一个SSCCE:packageswingtesting;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.JButton;importjavax.swing.JDialog;importjavax.swing.
我一直在与SwingWorker合作s一段时间并最终出现了一种奇怪的行为,至少对我来说是这样。我清楚地明白,由于性能原因,多次调用publish()方法在一次调用中合并。这对我来说很有意义,我怀疑SwingWorker会保留某种队列来处理所有调用。根据tutorial和API,当SwingWorker结束执行时,doInBackground()正常结束或从外部取消工作线程,然后done()方法被调用。到现在为止还挺好。但是我有一个例子(类似于教程中显示的),其中有process()方法调用完成后done()方法被执行。由于这两种方法都在EventDispatchThread中执行我希望
SwingWorker的done()方法的Javadoc:ExecutedontheEventDispatchThreadafterthedoInBackgroundmethodisfinished.我有线索表明,在取消worker的情况下,情况并非如此。Done在每种情况下都被调用(正常终止或取消),但是当cancelled它不入队到EDT,因为它发生在正常终止.在SwingWorker被取消的情况下,何时调用done是否有更精确的分析?澄清:这个问题是关于如何cancelSwingWorker的NOT。这里假设SwingWorker以正确的方式取消。这不是关于线程在应该完成时仍在工
我试图找出当我按下按钮时如何阻止SwingWorker线程运行。我一直在环顾四周,但在弄清楚如何做到这一点时遇到了一些麻烦。目前这就是我所拥有的:newMySwingWorkerClass(args).execute();然后我创建了一个按钮,我想用它来停止线程:button=newJButton("Stop");button.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){//Stoptheswingworkerthread}});我已经四处寻找答案,到目前为止我已经设法找到取
Relatedtomypreviousquestion:CallrepaintfromanotherclassinJava?我是Java新手,我看过一些关于SwingWorker的教程。但是,我不确定如何使用我在上一个问题中提供的示例代码来实现它。谁能解释一下我的代码片段如何使用SwingWorker和/或向我指出一个体面的教程?我看过了,但我不确定我是否理解。 最佳答案 通常,SwingWorker用于在Swing中执行长时间运行的任务。在事件调度线程(EDT)上运行长时间运行的任务可能会导致GUI锁定,因此其中一件事是使用Swi