Java中的进度指示器
问题描述:
我正在使用Java代码将它导出为PDF格式的Jasper报告。我的Java应用程序在Swing中。当工作报告正确导出时,我需要Java应用程序显示'Please wait'消息。Java中的进度指示器
我记得我有时只用4行代码就做了这个,我不记得他们现在是什么。我设法做的是在屏幕上显示一个小字条,上面写着“Please Wait”,一旦完成工作就会消失。据我记忆,这是一个内置的Swing功能。
答
> You can use swing worker for that
SwingWorker sw = new SwingWorker() {
@Override
protected Object doInBackground() throws Exception {
// TODO Auto-generated method stub
progressBar.setVisible(true);
status.setVisible(true);
progressBar.setIndeterminate(true);
progressBar.setBackground(getForeground());
//do some task & it will return something, like
int flag = logRunningThread();
return null;
}
@Override
public void done() {
progressBar.setIndeterminate(false);
progressBar.setBackground(getForeground());
progressBar.setVisible(false);
//After Success Message
System.out.println("Task Completed")
status.setVisible(false);
progressBar.setValue(100);
}
};
sw.execute();
Also take 2 variable
private JProgressBar progressBar;
private JLabel status;
& add them to panel & frame.
+0
你不应该在'doInBackground'方法中与UI进行交互,这是一种整点'SwingWorker' – MadProgrammer 2018-02-12 07:25:15
我建议您可能需要使用'SwingWorker',这将使你处理报告的出口事件指派线程之外,可以为您提供机制来检测时的过程已完成(因此您可以关闭该消息)。有关更多详细信息,请参见[Worker Threads和SwingWorker](http://docs.oracle.com/javase/tutorial/uiswing/concurrency/worker.html)。就像[这个例子](http://*.com/questions/24379667/java-swing-utilities/24379773#24379773) – MadProgrammer 2014-12-19 06:32:18