probleme mit Applet

Alex02

Mitglied
Hallo Leute,

ich hab in meinem Applet einen JFilechooser.
Wenn ich die Selection bestätige, soll ein Programm gestartet werden, das einen Bericht erzeugt. Soweit alles.

Jetzt zu meinem Problem:

public void actionPerformed(java.awt.event.ActionEvent e) {


if (e.getActionCommand().equals("ApproveSelection"))
{


try {
removeAll();
doLayout();
setSize(700,500);
setLocation(0,0);
add (warten);
setSize(700,500);
setLocation(0,0);
validate();
doLayout();
show();

berichte (jfchoos.getSelectedFile().getPath(),jTextFieldBezeichnung.getText(),choiceJahr.getSelectedItem(),parameter);


} catch (FileNotFoundException e1) {

e1.printStackTrace();
}

repErst = new ReportErstellt (jfchoos.getSelectedFile().getPath(),jTextFieldBezeichnung.getText());
removeAll ();
doLayout()
repErst.setSize(700,500);
repErst.setLocation(0,0);
add (repErst);
setSize(700,500);
setLocation(0,0);
validate();
doLayout();
show();
}
else
{

remove(apl);
doLayout();
repPW.setSize(700,500);
repPW.setLocation(0,0);
add (repPW);
setSize(700,500);
setLocation(0,0);
validate();
doLayout();
show();

}

}

Das Problem ist, dass zwar die Elemente vor dem Ausführen der Methode "berichte" verschwinden, jedoch nichts mehr angezeigt wird.
Nachdem "berichte" durch ist, kann ich das letzte Frame sehen.
Ich hab mir gedacht, dass ich, während die Methode "berichte" läuft die Meldung "Bitte warten" anzeigen kann. (Die Methode braucht übrigens schon ne Weile)

Hätt vielleicht jemand einen Tipp, wie ich diese Meldung hinbekomme?

Gruß


Alex
 
Du könntest probieren, vor dem "validate()" ein "invalidate()" aufzurufen, da es sein kann, daß Du ein Refresh-Problem hast.
 
Ich weiß nicht, ob das bei Applets genauso ist wie bei Anwendungen, aber wenn sich bei mir was aktualisieren soll, dann bringen die Methoden refresh, validate usw überhaupt nichts, weil sie nicht in die Event-Queue gelangen.
Darum musst du einen neuen Thread starten, der das für dich übernimmt.

Code-Beispiel schreib ich jetzt aus dem Gedächtnis, also keine Garantie, dass das so funktioniert bzw. die Namen alle richtig sind
Code:
Runtime.invokeLater(
    new Runnable() {
         public void run() {
                   DeinElement.refresh();
         }
    }
);

DeinElement muss dabei eine Klassenvariable sein, sonst ist sie in der anonymen Klasse von Runnable nicht bekannt.
 
Hallo,

tut mir leid, dass ich erst so spät antworte.
Danke für die Tipps.

Nachdem ich ewig rumprobiert hab, und daraus doch nichts geworden ist, hab ich während des Erstellungsprozesses den Mauszeiger zu einer Sanduhr gemacht.
Ich glaub, dass es genügt, um dem User zu zeigen, da tut sich grad was......... bitte warten.

Trotzdem vielen Dank.

Gruß

Alex
 
Zurück