Swing 从动作侦听器添加不确定的JProgressBar

Swing 从动作侦听器添加不确定的JProgressBar,swing,user-interface,progress-bar,jprogressbar,Swing,User Interface,Progress Bar,Jprogressbar,我希望一个不确定的进度条弹出,只要用户按下“运行”按钮,然后关闭时,工作要由应用程序完成。我使用NetBeans开发GUI。我该怎么做呢?gui类扩展了JFrame。以下是运行按钮的操作侦听器: public class GUI extends JFrame{ // other methods and constructos.... private JProgressBar pb = new JProgressBar(); private void runButtonActionPerf

我希望一个不确定的进度条弹出,只要用户按下“运行”按钮,然后关闭时,工作要由应用程序完成。我使用NetBeans开发GUI。我该怎么做呢?gui类扩展了JFrame。以下是运行按钮的操作侦听器:

public class GUI extends JFrame{
    // other methods and constructos....
private JProgressBar pb = new JProgressBar();
private void runButtonActionPerformed(java.awt.event.ActionEvent evt) {                                          


   pb.setIndeterminate(true);

   //other functions start...
   runButton.setEnabled(false);
    setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
   //....blah blah
}
}

如何将progressbar添加到JFrame中,然后在工作完成后将其删除?我不想用秋千工人

您不想使用
SwingWorker
,但必须使用(或类似的机制)。当您的计算占用事件调度线程(EDT)时,无法显示
JProgressBar

您必须将计算移动到单独的
线程
,以释放EDT。然后,EDT将能够在计算过程中显示
JProgressBar
,并在计算完成后将其删除

有关这方面的更多信息可以在教程中找到。可以找到
SwingWorker
JProgressBar
的示例