我想在用户按下“运行”按钮后立即弹出一个不确定的进度条,然后在应用程序完成的工作完成时关闭。我使用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。
答案 0 :(得分:2)
您不想使用SwingWorker
,但您必须(或类似的机制)。在保持事件调度线程(EDT)占用计算时,您无法显示JProgressBar
。
您必须将计算移至单独的Thread
以释放EDT。然后,EDT将能够在计算过程中显示JProgressBar
,并在完成后将其删除。
有关此内容的更多信息,请参阅'Concurrency in Swing'教程。可以找到SwingWorker
和JProgressBar
的示例here。