请考虑以下代码片段:importjava.awt.FlowLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.lang.reflect.InvocationTargetException;importjavax.swing.*;publicclassTestAppletextendsJApplet{@Overridepublicvoidinit(){try{SwingUtilities.invokeAndWait(newRunnable(){@Overridepub
我有一个存储对象列表的swing应用程序。当用户点击按钮时,我想对列表中的每个对象执行两个操作,然后在完成后,将结果绘制在JPanel中。我一直在尝试使用SwingWorker、Callable和Runnable来进行处理,但无论我做什么,在处理列表时(这可能需要几分钟,因为它是IO绑定(bind)的),GUI被锁定。我有一种感觉,这可能是我调用线程或其他东西的方式,或者可能与绘图功能有关?这不是线程,因为它非常快。我也必须按顺序执行两个处理阶段,那么确保第二个处理阶段等待第一个处理阶段的最佳方法是什么?我使用了join(),然后是while(x.isAlive()){Thread.s
我通过更新ProgressBar来监控长时间运行的任务。长时间运行的任务当然是在Swingworker线程中执行的。我曾经编写过这样的程序:publicclassMySwingWorkerClassextendsSwingWorker{privateJProgressBarprogressBar;publicMySwingWorker(JProgressBaraProgressBar){this.progressBar=aProgressBar;progressBar.setVisible(true);progressBar.setStringPainted(true);progres
我正在尝试让进度条准确反射(reflect)我的SwingWorker。但我真的不知道该怎么做。在操作完成之前,我得到了只做静态动画的栏,但我想要一个真正的Activity栏。/**Tochangethistemplate,chooseTools|Templates*andopenthetemplateintheeditor.*/packagefrglauncher;importjava.io.File;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException
使用SwingWorker代替Thread或Runnable有什么优势? 最佳答案 我认为SwingWorker的文档还不错:AnabstractclasstoperformlengthyGUI-interactingtasksinadedicatedthread.Whenwritingamulti-threadedapplicationusingSwing,therearetwoconstraintstokeepinmind:(refertoHowtoUseThreadsformoredetails):Time-consuming
考虑这段代码:publicvoidactionPerformed(ActionEvente){setEnabled(false);newSwingWorker(){privateStringlocation=url.getText();@OverrideprotectedFiledoInBackground()throwsException{Filefile=newFile("out.txt");Writerwriter=null;try{writer=newFileWriter(file);creator.write(location,writer);}finally{if(writ
当我在数据库上执行一些任务时,我正在尝试显示进度栏。但是,进度栏冻结了,我想在数据库上做的事情没有执行。我了解,为了确保摆动中的适当并发,我需要在辅助线程上执行数据库任务。我也知道,我的错误与Joptionpane有关。但是我无法提出解决方案来修复它。这是我的进度对话框的代码:publicclassProgressDialogextendsJDialog{/****/privatestaticfinallongserialVersionUID=1L;publicProgressDialog(){setModal(true);setTitle("Fortschritt");setSize(200
我在Java6中使用SwingWorker以避免在事件调度线程上运行长时间运行的代码。如果在我的done()方法中调用get()返回异常,那么处理异常的适当方法是什么?我特别担心可能的InterruptedExceptions。JavaDoc示例只是忽略了异常,但多年来我了解到吞下异常会导致难以调试的代码。示例用法如下:newSwingWorker(){@OverrideprotectedStringdoInBackground()throwsException{//dolong-runningcalculationreturnresult;}@Overrideprotectedvoi
我在Java6中使用SwingWorker以避免在事件调度线程上运行长时间运行的代码。如果在我的done()方法中调用get()返回异常,那么处理异常的适当方法是什么?我特别担心可能的InterruptedExceptions。JavaDoc示例只是忽略了异常,但多年来我了解到吞下异常会导致难以调试的代码。示例用法如下:newSwingWorker(){@OverrideprotectedStringdoInBackground()throwsException{//dolong-runningcalculationreturnresult;}@Overrideprotectedvoi
现在,我的main只调用了一个10行的gui。根据这些行中有多少有文本,调用9个类中的1个(两行必须有文本)。被调用的类执行我希望将进度条绑定(bind)到的计算。这是一个被调用类的示例(每个类都相似,但差异足以保证一个新类。)我认为问题是违反EDT规则,但我在它们上看到的所有示例都涉及一个主要的争论。代码运行时会出现框架,但在所有计算完成之前进度条不会更新。importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclasstwoLoanextendsJFrame{staticJFrameprogressFra