0
我正在使用Java代碼將它導出爲PDF格式的Jasper報告。我的Java應用程序在Swing中。當工作報告正確導出時,我需要Java應用程序顯示'Please wait'消息。Java中的進度指示器
我記得我有時只用4行代碼就做了這個,我不記得他們現在是什麼。我設法做的是在屏幕上顯示一個小字條,上面寫着「Please Wait」,一旦完成工作就會消失。據我記憶,這是一個內置的Swing功能。
我正在使用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.
你不應該在'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://stackoverflow.com/questions/24379667/java-swing-utilities/24379773#24379773) – MadProgrammer 2014-12-19 06:32:18