草庐IT

Swingworker

全部标签

Java Swingworker 和多线程

我正在设计一个JavaGUI驱动的应用程序,该应用程序运行许多单独的任务,每个任务都在其自己的SwingWorker扩展类中。这是我使用的正常设计,目的是在它们自己的线程上运行任务,并仍然保持EDT自由更新GUI。每个SwingWorker都使用Executors.newCachedThreadPool在其自己的线程上启动。但是,在一个特定的类中,有一个任务需要相当长的时间来处理。该任务包含一个for循环,最多可执行六次计算。我曾想过在各自的线程中实现六个计算中的每一个以加快处理时间,但我不确定实现这个的最佳方法。是否可以同时扩展SwingWorker和实现Runnable,然后在fo

java - 等待 SwingWorker 完成

我想等待我的SwingWorker完成工作,然后我想执行另一个SwingWorker。在这种情况下,Encrypteer3是一个扩展SwingWorker的类。我的代码:input=txtTekst.getText();key=txtKey.getText();System.out.println("thread1start");Encrypteer3a=newEncrypteer3();a.execute();while(a.isDone()==false){//donothing}input=output;key=txtKey1.getText();System.out.print

java - 处理 ExecutionException 的原因

假设我有一个类定义了一大块要完成的工作,它可以产生几个检查异常。classWorkerClass{publicOutputwork(Inputinput)throwsInvalidInputException,MiscalculationException{...}}现在假设我有某种可以调用此类的GUI。我使用SwingWorker来委派任务。FinalInputinput=getInput();SwingWorkerworker=newSwingWorker(){@OverrideprotectedOutputdoInBackground()throwsException{retur

java - 使用 invokeLater 或 SwingWorker 从另一个线程更新 Swing 组件

我正在开发一个带有SwingGUI的小型应用程序。应用程序在另一个线程中执行IO任务,当该线程完成时,GUI应相应更新以反射(reflect)线程的操作结果。在(worker,non-GUI)中运行的类在构造函数中传递给它的对象将用于更新GUI,所以我不需要将GUI的东西放在非GUI类中,而是传递用于更新GUI的对象到那个类(class)。据我了解这里阅读的形式,(线程/Swing)更新(更改)SwingGUI的安全选项将使用javax.swing.SwingUtilities.invokeLater(),javax.swing.SwingUtilities.invokeLaterWa

java - 将 SwingWorker 的通用类型设置为 void?

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:Whatisthedifferencebetweenjava.lang.Voidandvoid?我想为SwingWorker创建一个具体类,最终和中间结果类型都为void。我写了下面的代码:classAnswerWorkerextendsSwingWorker{protectedvoiddoInBackGround(){System.out.println("whatisyourproblem!!");}}这给了我以下错误:Multiplemarkersatthisline-Syntaxerrorontoken

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

我第一次使用Swing创建一个简单的GUI。它由一个JFrame组成,我在其上放置了一个JButton,单击它时会调用一些其他代码,这大约需要3秒返回。就在调用此代码之前,在actionPerformed()中,我想更新按钮上的文本以通知用户正在进行处理。我的问题是按钮上的文本直到3秒调用返回后才更新。我希望在通话期间显示更新后的文本,然后我会在之后将其改回。在JButton上调用repaint()不会执行任何操作,在JFrame上调用它会导致“Exceptionin单击按钮时抛出线程“AWT-EventQueue-0”java.lang.NullPointerException”。

java - 我是否在 EDT 之外更新 Swing 组件?

我已经阅读了很多关于Swing、线程、invokeLater()、SwingWorker等的内容,但我似乎无法理解所有这些,所以我试图创建一个非常简单的程序来阐明。我看过很多例子,但似乎没有一个能说明我正在尝试做的事情。这是我在示例中尝试做的事情。我有一个按钮和一个标签,当我单击该按钮时,我希望程序暂停3秒,然后再向标签的文本附加一个句点。在那3秒内,我希望GUI正常显示并继续响应额外的点击。这是我写的:importjavax.swing.SwingWorker;publicclassNewJFrameextendsjavax.swing.JFrame{privatejavax.swi

java - SwingWorker 和 Executor 的区别

我正在使用SwingWorker在我正在制作的应用程序上执行一些重负载任务。虽然今天我了解了Executor类和这个例子:Executors.newCachedThreadPool().execute(newRunnable(){publicvoidrun(){someTask();});有人可以解释为什么要使用SwingWorker而不是上面的例子吗?这是我目前使用SwingWorker的方式:SwingWorkerworker=newSwingWorker(){protectedObjectdoInBackground(){someTask();returnnull;}};work

java - 如何等到 SwingWorker 完成?

我有一个swingworker在后台计算,同时更新JFrame中的progressBar。如何让我的主线程等待doInBackground()完成?我知道我可以把东西放在done()方法中,但我想知道是否有办法真正让程序等待(那个线程,是正确的)。类似于模态JDialog的功能。所以...SwingWorkera=newSwingWorker();a.executedoOtherStuff();doOtherStuff仅在doInBackground完成后运行,但不会将该方法放入SwingWorker的done()方法中。 最佳答案

java - 为什么 SwingWorker 会意外停止?

我想尝试使用SwingWorker的一些想法,因为我没有太多地使用它。相反,我遇到了一个问题,但我不知道出了什么问题。这是一个简短的SSCCE这证明了这个问题(我知道这里的人喜欢SSCCE):importjavax.swing.SwingUtilities;importjavax.swing.SwingWorker;publicclassSwingWorkerTest{publicstaticvoidmain(String[]args){SwingUtilities.invokeLater(newRunnable(){@Overridepublicvoidrun(){newMySwin