2014-12-19 28 views
0

我正在使用Java代碼將它導出爲PDF格式的Jasper報告。我的Java應用程序在Swing中。當工作報告正確導出時,我需要Java應用程序顯示'Please wait'消息。Java中的進度指示器

我記得我有時只用4行代碼就做了這個,我不記得他們現在是什麼。我設法做的是在屏幕上顯示一個小字條,上面寫着「Please Wait」,一旦完成工作就會消失。據我記憶,這是一個內置的Swing功能。

+2

我建議您可能需要使用'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

回答

-1
> 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