Hi all!
Ich probiere nun schon stundenlang und es geht nichts, mir hilft auch kein Tutorial und nix... :
Meine Klasse GUI hat eine actionperformed Methode, in der, nach einem Buttonclick, viele Emails versendet werden sollen und nach jeder versendeten Email soll ein label z.B. "5 / xxx Mails versendet" anzeigen.
Nachdem mir die EDT-Problematik bewusst geworden ist, habe ichs mit einem Swingworker versucht, leider wird das Label immer noch nicht nach jedem Versenden aktualisiert, sondern nur ganz am schluss...
Meine GUI-Klasse: //sehr verkürzt
Und meine SwingWorker-Klasse dazu:
Hat vielleicht jemand eine Idee warum mein Label nicht aktualisiert wird?
Was ist falsch?
Vielen Dank!!!
Ich probiere nun schon stundenlang und es geht nichts, mir hilft auch kein Tutorial und nix... :
Meine Klasse GUI hat eine actionperformed Methode, in der, nach einem Buttonclick, viele Emails versendet werden sollen und nach jeder versendeten Email soll ein label z.B. "5 / xxx Mails versendet" anzeigen.
Nachdem mir die EDT-Problematik bewusst geworden ist, habe ichs mit einem Swingworker versucht, leider wird das Label immer noch nicht nach jedem Versenden aktualisiert, sondern nur ganz am schluss...
Meine GUI-Klasse: //sehr verkürzt
Code:
public class GUI extends JFrame{
...
...
public void actionPerformed(ActionEvent e) {
if(e.getSource()==this.buttonSend){
for (int i=0; i<anzahlEmails; i++){
MySwingWorker worker = new MySwingWorker(i,this.lblSendStatus);
worker.execute();
}
}
}
...
...
...
}
Und meine SwingWorker-Klasse dazu:
Code:
public class MySwingWorker extends SwingWorker<Integer, Void>{
private int ind;
private JLabel label;
public MySwingWorker(int i, JLabel label){
super();
this.ind = i;
this.label = label;
}
@Override
protected Integer doInBackground() throws Exception {
//WORK TO DO - Hier: eine Emailsenden, dauert halt "relativ" lange
return this.ind;
}
@Override
protected void done(){ //try-catch wegen der get() Methode
try{
this.label.setText("Email "+get()+" / xxx versendet.");
}
catch(Exception e){//nix}
}
}
Hat vielleicht jemand eine Idee warum mein Label nicht aktualisiert wird?
Was ist falsch?
Vielen Dank!!!