# JProgressBar einbinden



## Stefan3333 (12. Jun 2004)

Hallo,

ich habe zwar schon gesucht aber ich werde aus den schon vorhandenen Diskussionen nicht schlau. Ich habe einen JFrame, indem nach Buttonklick eine Methode aufgerufen wird. In der Methode läuft eine for schleife ab. Ich möchte nun den Status per JProgressBar anzeigen. Wie geht das?




```
public class Basic extends JFrame
{
  
  static JProgressBar bar = new JProgressBar();
  
  public BasicKey(String version) 
  {
    .
    .
    .    
    bar.setStringPainted(true);
    bar.setMinimum(0);
    bar.setMaximum(100000);
    .
    .
    .

  //-----------------------------------------------------------------------   
  private void xyz(long groesse)
  {
 	
  	java.util.Timer timer = new java.util.Timer();
                       
	timer.schedule(new Task(), 100, 333);                       
                       
	for (int i = 0; i < groesse; i++)
	{
                    //.....
                    bar.setValue(i);
                    }
  		
  	timer.cancel();
  		
  }
  //-----------------------------------------------------------------------


class Task extends java.util.TimerTask
{
  
  public void run()
  {
    //Hier müsste die ProgressBar jetzt neu gezeichnet werden oder so?
  }
}
```


----------



## Beni (12. Jun 2004)

Ich mach das immer so:


```
public void doSomething(){
  final JProgressBar progressBar = ...
  progressBar.setMinimum( ... );
  progressBar.setMaximum( ... );

  final JButton button = ... // der Button der gedrückt wurde, um den Prozess zu starten
  button.setEnabled( false );
  
  Thread thread = new Thread(){
    public void run(){
       for( [sehr lange] ){
          [sehr kompliziert]
          progressBar.setValue( [irgendein passender Wert] );  // 
      }
      button.setEnabled( true );
    }

    thread.start();
  }
}
```

mfg Beni


----------



## Stefan3333 (12. Jun 2004)

Hmmm, wenn ich versuche das einzubauen bekomme ich immer einen Compilerfehler. 

Syntaxfehler bei Token "(", "Identifier" erwartet 

Bei dem Befehl: thread.start();

Also am meinem Quelltext dürfte es nicht liegen das habe ich mehrmals geprüft. Fehlt in dem aufbau noch was?


----------



## Illuvatar (12. Jun 2004)

Ich hoffe doch, du hast [sehr lange], [sehr kompliziert], [irgendein passender Wert] und ... ersetzt, oder???


----------



## Beni (12. Jun 2004)

Oder mein Code ist nicht richtig :cry:

So sollte es besser funktionieren:

```
public void doSomething(){
	    final JProgressBar progressBar = ...
	    progressBar.setMinimum( ... );
	    progressBar.setMaximum( ... );

	    final JButton button = ... // der Button der gedrückt wurde, um den
								   // Prozess zu starten
	    button.setEnabled( false );
	   
	    Thread thread = new Thread(){
	      public void run(){
	         for( [sehr lange] ){
	            [sehr kompliziert]
	            progressBar.setValue( [irgendein passender Wert] );  //
	       
	        button.setEnabled( true );
	      }
	    };
	    
	    thread.start();
	 }
```


----------



## Stefan3333 (12. Jun 2004)

Cool!

Es klaaaaappt! Es gibt wohl doch einen Gott


----------

