JProgressBar einbinden

Status
Nicht offen für weitere Antworten.

Stefan3333

Mitglied
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?



Code:
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?
  }
}
 
Ich mach das immer so:

Code:
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
 
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?
 
Oder mein Code ist nicht richtig :cry:

So sollte es besser funktionieren:
Code:
	  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();
	 }
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben