2010-11-04 6 views
0

Je souhaite afficher une barre de progression dans mon programme Java, mais je ne veux pas qu'elle fonctionne réellement sur une tâche réelle, mais je veux juste montrer que certains processus sont en cours et cela devrait ressembler à un processus en cours. J'ai essayé de le faire avec le code suivant, mais il ne me aide, alors s'il vous plaît si vous pouvez aider ....Comment afficher une barre de progression de travail mais muette dans java

code:

 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

savez-vous comment utiliser Swing? ou vous voulez dire une barre de console? – fabrizioM

+1

ok laissez-moi effacer, je suis en train d'importer ma base de données dans mysql grâce à un bouton de commande et ce que je veux, c'est que lorsque l'utilisateur cliquera sur le bouton une barre de progression affichera le progrès fictif. – Vipul

+0

btw, j'utilise netbeans pour mon programme – Vipul

Répondre

1

Voici un exemple qui montre une barre de progression allant de 0 à 100. Il est important de mettre à jour la barre de progression sur le fil d'envoi d'événement en utilisant SwingUtilities.invokeLater ou SwingUtilities.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(); 

Essayez cela, il va certainement travailler. Dans Java, les composants sont mis à jour en utilisant EDT et invokeLater(Runnable) est utilisé pour appeler une tâche lorsque toutes les autres tâches du bloc ont été complétées.