Java SwingWork如何与EDT协同工作?

Java SwingWork如何与EDT协同工作?,java,multithreading,swing,swingworker,event-dispatch-thread,Java,Multithreading,Swing,Swingworker,Event Dispatch Thread,好的,我有下面的代码可以很好地工作,但是我想了解在这段代码中线程是如何工作的 private void jLabelInicioMovimentacaoMouseClicked( java.awt.event.MouseEvent evt) {// GEN-FIRST:event_jLabelInicioMovimentacaoMouseClicked jStatusBar1.setWaitState(false); jStat

好的,我有下面的代码可以很好地工作,但是我想了解在这段代码中线程是如何工作的

private void jLabelInicioMovimentacaoMouseClicked(
            java.awt.event.MouseEvent evt) {// GEN-FIRST:event_jLabelInicioMovimentacaoMouseClicked     

        jStatusBar1.setWaitState(false);
        jStatusBar1.setWaitStartMessage("Pesquisando...");
        jStatusBar1.setWaitState(true);

        this.sw = new SwingWorker() {

            @Override
            public Object construct() {
                try {
                    jGDataTextFieldDataInicial
                            .setValue(retornarPrimeiroDiaMovimentacao());
                } catch (Exception e) {
                    e.printStackTrace();
                    JGOptionPane.showMessageDialog(FFormMain.this,
                            "Ocorreu um erro nas bibliotecas",
                            JGOptionPane.ERROR_MESSAGE);
                }
                return null;
            }

            @Override
            public void finished() {
                jStatusBar1.setWaitStartMessage("Finalizado");
                jStatusBar1.setWaitState(false);
            }
        };
        sw.start();

    }// GEN-LAST:event_jLabelInicioMovimentacaoMouseClicked
因此,我的想法是:当我执行
jStatusBar1.setWaitState(false)(第一行)时此代码立即在EDT(事件调度程序线程)中执行,其他行也执行

但是当我执行
this.sw=new SwingWorker()…
时,我正在创建一个新线程(在EDT之外),当这个“外部线程”完成时,从EDT调用方法“finished()”,并更新jStatusBar1


我的想法是对的

请如何回答您的问题,似乎您从未阅读过Oracle教程,请您理解为什么SwingAPI中有SwingWorker,它是如何工作的,等等……您使用的
SwingWorker
类是什么?JDK中的方法既没有
finished
也没有
construct
方法