Hallo Zusammen,
wenn ich einen weiteren Thread starte wird dieser nicht gleich ausgeführt. Es macht mich langsam wahnsinnig! Habe schon in meheren Büchern nachgesehen und das Internet ebenfalls durchkemmt. Ich hoffe ihr könnt mir weiter helfen.
Ich schreibe im Normalfall nicht wegen jeder Kleinigkeit aber an dem Thema sitze ich schon mehere Tage.
Hintergrund:
Im Run-Zweig werden bei sa.save(profil, dst); Dateien in ein anderes Verzeichnis kopiert(ca. 400 MB). parallel soll in der progressBar der Fortschritt angezeigt werden.
Die GUI friert quasi ein, nachdem der startListener aufgerufen. Erst nachdem der Kopiervorgang abgeschlossen ist, wird die GUI mit den ganzen removes aktualisiert und ist wieder bedienbar.
Hier das Code-Schnipsel:
wenn ich einen weiteren Thread starte wird dieser nicht gleich ausgeführt. Es macht mich langsam wahnsinnig! Habe schon in meheren Büchern nachgesehen und das Internet ebenfalls durchkemmt. Ich hoffe ihr könnt mir weiter helfen.
Ich schreibe im Normalfall nicht wegen jeder Kleinigkeit aber an dem Thema sitze ich schon mehere Tage.
Hintergrund:
Im Run-Zweig werden bei sa.save(profil, dst); Dateien in ein anderes Verzeichnis kopiert(ca. 400 MB). parallel soll in der progressBar der Fortschritt angezeigt werden.
Die GUI friert quasi ein, nachdem der startListener aufgerufen. Erst nachdem der Kopiervorgang abgeschlossen ist, wird die GUI mit den ganzen removes aktualisiert und ist wieder bedienbar.
Hier das Code-Schnipsel:
Java:
class startListener extends Thread implements ActionListener{
saveData sa = new saveData();
String pa = path.getText();
File dst = new File(pa);
final String[] KEYS = { "user.name", "user.language", "user.home","os.name", "java.version" };
String username = System.getProperty(KEYS[0]);
String prof = "C:\\Dokumente und Einstellungen\\";
File profil = new File(prof+""+username);
int soValue;
int isValue;
public void actionPerformed(ActionEvent e){
//Code von hier bis zu t1.start() wird erst nach
//Ablauf der run-Methode ausgeführt!? Warum???
process.setVisible(true);
back.setEnabled(false);
path.setVisible(false);
checkPath.setVisible(false);
choice.setVisible(false);
remove(T1);
remove(T2);
remove(T3);
remove(I2);
remove(I1);
repaint();
start.setEnabled(false);
startListener sl = new startListener();
Thread t1 = new Thread(sl);
t1.start();
sl.calcSize();
}
public void run(){
sa.save(profil, dst);//hier findet ein Kopiervorgang statt
exit.setVisible(true);
start.setVisible(false);
}
void calcSize(){ //hier soll die parallel progressBar aktualisiert.
long istWert = sa.getFolderSize(profil, pa)/1000;
isValue = (int)istWert;
while(isValue>soValue){
try{
long sollWert = sa.getFolderSize(dst, pa)/1000;
soValue = (int)sollWert;
}catch(ArrayIndexOutOfBoundsException ae){}
System.out.println(isValue+ " " +soValue);
process.setStringPainted(true);
process.setMaximum(isValue);
process.setValue(soValue);
}
}
}