2010-11-04 45 views
0

我想在我的java程序中顯示進度條,但我不希望它實際上在真正的任務上工作,但我希望它只顯示某個進程正在完成它應該看起來好像有一些進程正在進行。我試着用下面的代碼來做到這一點,但它並沒有幫助我,所以請u能幫助....如何在java中顯示工作但虛擬的進度條

代碼:

 try 
     { 
      for(int i=0;i<=100;i++){ 
       prog.setValue(i); // this would set the progressbar 
      Thread.sleep(300); // this should pause the program or the loop 
      } 
     } 

     catch(Exception e){ 

     } 
+0

你知道如何使用Swing嗎?或者你的意思是一個控制檯吧? – fabrizioM 2010-11-04 06:16:40

+1

確定讓我明確自己,我實際上是通過一個命令按鈕將我的數據庫導入到mysql中,我想要的是當用戶單擊按鈕時將顯示一個進度條,它將顯示虛擬進度而不是實際進度。 。 – Vipul 2010-11-04 06:30:34

+0

順便說一句,我使用netbeans爲我的程序 – Vipul 2010-11-04 06:31:13

回答

1

下面是一個顯示進度條從0到100的示例。使用SwingUtilities.invokeLaterSwingUtilities.invokeAndWait更新事件分派線程上的進度條非常重要。

public static void main(String[] args){ 
     JFrame f = new JFrame(); 
     f.setLayout(new BorderLayout()); 
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     final JProgressBar bar = new JProgressBar(0,100); 
     f.add(bar, BorderLayout.SOUTH); 
     f.setSize(64, 64); 
     f.pack(); 
     f.setVisible(true); 

     for(int i = bar.getMinimum(); i <= bar.getMaximum(); i++){ 
      final int percent = i ; 
      SwingUtilities.invokeLater(new Runnable(){ 
       @Override 
       public void run() { 
        bar.setValue(percent); 
       } 
      }); 
      try { 
       Thread.sleep(25); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
     } 
} 
1
int progressCounter=0; 

    new Thread(new Runnable() { 
     public void run() { 
      while (progressCounter <= 100) { 
       SwingUtilities.invokeLater(new Runnable() { 
        public void run() { 
         jProgressBar1.setValue(jProgressBar1.getValue()+1); 
         System.err.println("hello"); 
        } 
       }); 
       try { Thread.sleep(500); } catch (InterruptedException e) {} 
      } 
     } 
    }).start(); 

試試這個,它肯定會工作。在java中,使用EDT更新組件,invokeLater(Runnable)用於在塊中的其他任務完成時調用任務。