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

时间:2012-07-19 09:20:08

标签: 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 runButtonActionPerformed(java.awt.event.ActionEvent evt) {                                          


   pb.setIndeterminate(true);

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

如何将进度条添加到我的JFrame,然后在我的工作完成后将其删除?我不想使用Swing Worker。

1 个答案:

答案 0 :(得分:2)

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

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

有关此内容的更多信息,请参阅'Concurrency in Swing'教程。可以找到SwingWorkerJProgressBar的示例here