C
Centurio
Gast
Guten Morgen erstmal miteinander,
Zur Erklärung meines Problemes:
Ich habe eine boolean Funktion deren Ausführungszeit etwas länger dauern kann. Genauer gesagt ist dies ein Funktion, die sich auf einen RMI Server verbindet und sich dort anmeldet.
Soweit so gut, ich möchte dieses Verbinden mit einer JProgressBar im Indeterminate Modus visualisieren. Und zwar so, dass ein Dialog mit eben dieser JProgressBar angezeigt wird solange die Funktion nicht zurückgekommen ist. Das Probleme welches ich erfahren habe liegt darin, dass ich für diesen Dialog mit der JProgressBar einen eigenen Thread brauche, da sonst beides hintereinander ausgeführt werden würde (zuerst also der Dialog und dann die Funktion). Jetzt muss ich den Dialog aber nach Rückkehr der Funktion schliessen können, d.h. den Thread irgendwie auch beenden.
ich habe für den Dialog folgenden Ansatz:
und für die Aufrufende Funktion:
Dies funktioniert nur ein mal, nämlich beim Standardmäßigen Startaufruf der Funktion doconnect() aus dem Hauptthread heraus. Beim nächsten Aufruf per Menü von der Oberfläche (eigener Thread), bleibt der Dialog auch offen nachdem die Funktion zurückgekehrt ist.
Meine Frage also, warum ist dies so und wie kann ich einen Dialog schreiben, der das tut was ich möchte.
Mfg Centurio
Zur Erklärung meines Problemes:
Ich habe eine boolean Funktion deren Ausführungszeit etwas länger dauern kann. Genauer gesagt ist dies ein Funktion, die sich auf einen RMI Server verbindet und sich dort anmeldet.
Soweit so gut, ich möchte dieses Verbinden mit einer JProgressBar im Indeterminate Modus visualisieren. Und zwar so, dass ein Dialog mit eben dieser JProgressBar angezeigt wird solange die Funktion nicht zurückgekommen ist. Das Probleme welches ich erfahren habe liegt darin, dass ich für diesen Dialog mit der JProgressBar einen eigenen Thread brauche, da sonst beides hintereinander ausgeführt werden würde (zuerst also der Dialog und dann die Funktion). Jetzt muss ich den Dialog aber nach Rückkehr der Funktion schliessen können, d.h. den Thread irgendwie auch beenden.
ich habe für den Dialog folgenden Ansatz:
Code:
public class VerbindungsDialog extends JDialog implements Runnable {
...
public void run() {
this.setVisible(true);
}
...
}
und für die Aufrufende Funktion:
Code:
VerbindungsDialog vDialog;
Thread vDialogThread;
public void doconnect() {
if (vDialog == null) vDialog = new VerbindungsDialog();
vDialogThread = new Thread(vDialog);
vDialogThread.start();
boolean done = // hier die Lange Funktion mit Rückgabewert boolean.
vDialog.setVisible(false);
}
Dies funktioniert nur ein mal, nämlich beim Standardmäßigen Startaufruf der Funktion doconnect() aus dem Hauptthread heraus. Beim nächsten Aufruf per Menü von der Oberfläche (eigener Thread), bleibt der Dialog auch offen nachdem die Funktion zurückgekehrt ist.
Meine Frage also, warum ist dies so und wie kann ich einen Dialog schreiben, der das tut was ich möchte.
Mfg Centurio