2010-11-04 42 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)用于在块中的其他任务完成时调用任务。