Befehl wird erst nach dem Ausführen einer Funktion ausgeführt

ITrun90

Mitglied
Hey,

Bei Klick auf einen Button soll folgendes passieren:
Java:
private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        File f1 = new File(jTextField1.getText());
        File f2 = new File(jTextField2.getText());
       
        
        do{
            if(check){                                //wenn kein anderer Kopiervorgang läuft
                jButton6.setEnabled(false);     //dieser Befehl wird erst sichtbar nachdem bu() fertig ist
                System.out.println("test");      //dieser Befehl wird aber ausgeführt
                bu(f1, f2);                           //hier findet ein Kopiervorgang statt (dauert lange)
                jProgressBar1.setValue(0);
                jButton5.setText("Backup now");
                

            }
        }while(!check);
        done(true);
        
    }
 
lange Berechnungen (z.b. dein Kopiervorgang) NIE auf dem EDT ausführen, starte dafür einen eigenen Thread.
Du blockierst sonst den EDT, und der kann die Änderungen auf der GUI nicht ausführen.
 
Ahh ok. Also könnte ich praktisch einen Timer mit einem neuen Task versehen der das macht und dann würde es funktionieren? Also ist nen TimerTask auch sowas wie ein neuer Thread?
 
naja einen timer brauchst du hier ja nicht. mach einfach einen thread:

Java:
		new Thread(new Runnable(){
			@Override
			public void run() {
				// hier der Kopiervorgang				
			}	
		}).start();
 

Zurück
Oben