我希望在用户按下"运行"按钮后立即弹出一个不确定的进度条,然后在应用程序完成工作时关闭。我使用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。
您不想使用SwingWorker
,但必须使用(或类似的机制)。当事件调度线程(EDT)忙于计算时,不能显示JProgressBar
。
您必须将计算转移到单独的Thread
才能释放EDT。然后EDT将能够在计算过程中显示JProgressBar
,并在计算完成时将其删除。
有关这方面的更多信息可以在"Swing中的并发"教程中找到。这里可以找到SwingWorker
和JProgressBar
的示例。