Java中的进度指示器

问题描述:

我正在使用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://*.com/questions/24379667/java-swing-utilities/24379773#24379773) – MadProgrammer 2014-12-19 06:32:18

> 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