Programmunterbrechung und warten auf Benutzereingabe

Status
Nicht offen für weitere Antworten.

atwork

Mitglied
Hallo!

Folgender Sachverhalt:

Ein Client überprüft via RMI diverse Daten - das ganze findet in einer Methode statt. Wen jetzt ein spezielles Datum einen definierten Wert hat, soll die Überprüfung angehalten werden und ein neues Fenster (Fenster A) öffnet sich (neue Klasse), dass eine Eingabe erwartet. Erst wenn der Benutzer mit Klick auf OK beendet hat, soll die Überprüfung in der ursprünglichen Klasse fortgesetzt werden. Am Ende erscheint ein weiteres Fenster (Fenster B), in dem diverse Daten zur Überprüfung angezeigt werden.


Nachfolgende Lösungsansätze scheiterten:

1. Fenster A als JFrame: Fenster A erscheint als graue Fläche, wird jedoch erst nach Erscheinen von Fenster B komplett aufgebaut - d.h. die Überprüfugn geht im Hintergrund weiter.

2. Fenster A als JDialog: Fenster A erscheint komplett, Benutzer kann eine Eingabe machen, nachdem jedoch OK geklickt wurde, verschwindet das Fenster für den Bruchteil einer Sekunde, erscheint wieder so wie es verlassen wurde und weitere Klicks auf OK bewirken nichts. Erst nachdem man das Fenste rmit ALT-F4 (oder Klicken auf das Kreuz) beendet hat wird im Programm (korrekt) fortgefahren.

3. Fenster A in neuem Thread: Der ganez Aufruf von Fenster A wird in einen Thread verpackt, auf den dann mit join() gewartet wird. Gleiches Verhalten wie unter 1. Anscheinend wartet run() hier nicht auf den ActionListener udn beendet sich nach dem Aufbau des Fensters.


Weitere Lösungsvorschläge:
Da ich hier nun mit meinem Lateina m Ende bin, weiss vielleicht jemand anderes eine Lösung für dieses Problem, oder hat selbst so etwas schon einmal implementiert. Ich wäre für eine schnelle Lösung dankbar...

Vielen Dank

Gruss,
atwork
 

TRunKX

Bekanntes Mitglied
Ähhh ich hoffe ich habe richtig Verstanden was du willst. Du hast eine Methode die in 3 Schritten ablaufen soll.


Also dann würde ich persöhnlic die Methode in 3 Teile Splitten und sie über das Button ActioEvent nach jeder Benutzereingabe ablaufen lassen.

Code:
public void MEGAMETHODE ()
{
SUPERSCHRITT1;
SUPPERSCHRITTTTT2;
ULTRASCHRITT;
}

zu....

public void Superschritt()
{
    kill_something();
}

public void Superschritt2()
{
    kill_something();
}

public void Superschritt3()
{
    kill_something();
}

actionperformed(ActionEvent e)
{

if (e.getSource().equals(1.malOKButton))
{
    Superschritt();
}
if(e.getSource().equals(2.malOKButton))
{
    Superschritt2();
}


usw.
 

atwork

Mitglied
Ich weiss jetzt zwar nicht so ganz, was du meinst, aber vielleicht nochmal zum Verständnis:

Während da auf Client-Seite in einer Methode verscheidene Remotechekcs gemacht werden, soll bei einem Check bei bestimmten Werten dieses Fenster hcohkommen, wo der User etwas eingeben muss.

Problem ist, dass sich entweder das Fenster nicht richtig aufbaut, bevor die ganzen Remotchecks abgelaufen sind (und dann ist es zu spät, noch etwas einzugeben), oder das fenster wird nicht richtig geschlossen (als JDialog) - nach einmaligem Klick auf OK sollte das Fenster wieder verschwinden und die eigentlichen RemoteChecks an der Stelle der Unterbrechung fortgeführt werden. Das tut es aber in diesem Fall nicht, sondern verschwindet nru kurz udn erscheint dann samt Eingabe wieder und jeder weiter Klick auf OK führt zu nichts (das Programm wird auch nicht weiter fortgeführt) - erst mit dem Schliessen des fensters (also ALT+F4 oder eben X) geht die Verarbeitung weiter...

Um das ganze mal anschaulich zu machen, heir der code aus dem ActionListener...


Code:
	public void actionPerformed(ActionEvent ae) {
		if (ae.getActionCommand().equals("OK")) {
			jd.setVisible(false);
			log.methods("button OK pressed");
			buttonOK.removeActionListener(this);
			log.methods("security label is " + secLabel.getText());
			onlinerequest.client.Client.setLabel(secLabel.getText().toUpperCase());
			log.methods("nach der übergabe");
			jd.dispose();
		}
	}

Wobei jd das JDialog-Fenster ist...
 

TRunKX

Bekanntes Mitglied
Ok das heisst das aufsplitten in mehrere Methoden ist nicht drinn.
Ich überlege gerade ob ein Thread mit einem Observer das nicht regeln kann.
Der Observer meldet dann wenn eines der nötigen Kriterien für eine Eingabe da ist das das es was gibt und das MainProg bzw. der MainThread reagiert darauf. Solange wie die eingabe kommt solltest du den Thread dann schlafenlegen.

Geht das jetzt eher in die Richtung deines Problems?
 

atwork

Mitglied
Ja...das ist schon eher die Richtung - Problem ist halt, dass ich mich mti Threads nciht wirklich auskenne :((

Die Sache mti dem JDialog funktioniert ja eigentlich fast (nur dass es eben nciht weiter geht)...aber wenn es da einen Thread-Experten gibt, der mri da helfen kann...
 

atwork

Mitglied
Das Thema hat sich zur Freude aller erledigt!

Nach dem Entfernen der Zeile jd.show() hat sich das ganze so verhalten, wie es sich verhalten sollte... :?

Danke aber trotzdem, dass sich jemand dem Problem angenommen hat...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
izoards JavaFX Background Task warten auf Knopfdruck AWT, Swing, JavaFX & SWT 4
G FX warten bis ein anderes GUI Element ausgewählt wurde AWT, Swing, JavaFX & SWT 8
SvenPittelkow Programm soll auf JButton warten bis der geklickt wurde AWT, Swing, JavaFX & SWT 1
kodela Swing Anzeige des Warten-Cursors AWT, Swing, JavaFX & SWT 8
H Eigener Dialog mit Rückgabe -> Warten auf Button AWT, Swing, JavaFX & SWT 3
kodela Swing Problem mit Warten-Dialog AWT, Swing, JavaFX & SWT 16
J Compiler in der JavaFX stop() Methode warten lassen bist eine Aktion in einer anderen Scene gemacht AWT, Swing, JavaFX & SWT 5
W JavaFX Webview warten bis Seite geladen geladen ? AWT, Swing, JavaFX & SWT 0
U Java FX Warten auf Textfield eingabe AWT, Swing, JavaFX & SWT 17
M JavaFX FadeTransition, warten bis beendet AWT, Swing, JavaFX & SWT 10
O Swing JDialog öffnen und dann warten bis er geschlossen wurde AWT, Swing, JavaFX & SWT 2
H Event Handling JavaFx - auf Event warten AWT, Swing, JavaFX & SWT 4
Thallius Auf Swingworker warten? AWT, Swing, JavaFX & SWT 5
D Swing Bei MenuSelectionManager auf Ausführung warten? AWT, Swing, JavaFX & SWT 5
gamebreiti auf usereingabe warten mit GUI(nur Labels, Buttons etc. keine Texteingaben) AWT, Swing, JavaFX & SWT 3
P Warten auf komponente AWT, Swing, JavaFX & SWT 2
H AWT Auf Bestätigung warten AWT, Swing, JavaFX & SWT 6
B Timer, TimerTask und Warten AWT, Swing, JavaFX & SWT 4
L JavaFX Wait/Sleep/postedDelay - Einfach nur warten AWT, Swing, JavaFX & SWT 4
C Swing SwingWorker: Auf beendigung eines Formulars / einer Arbeit warten AWT, Swing, JavaFX & SWT 10
F JFrame nach Buttonklick 3 Sekunden warten, bevor es sich ändert AWT, Swing, JavaFX & SWT 2
C Schleife auf Mausklick warten lassen AWT, Swing, JavaFX & SWT 6
A Auf Tastendruck warten AWT, Swing, JavaFX & SWT 9
A Auf eingabe warten AWT, Swing, JavaFX & SWT 5
S auf paintComponent() warten AWT, Swing, JavaFX & SWT 34
B Warten bis neues ImageIcon zugewiesen ist AWT, Swing, JavaFX & SWT 3
S Swing Bild (Gif) in Bitte warten JDialog AWT, Swing, JavaFX & SWT 6
K Vom Gui aus auf einen Thread warten AWT, Swing, JavaFX & SWT 4
M Hauptprogramm pausieren und auf Ergebnis eines JDialogs warten AWT, Swing, JavaFX & SWT 7
I Swing Warten, bis eine GUI-Komponente aktualisiert ist? AWT, Swing, JavaFX & SWT 4
A Swing Warten bis JDialog fertig AWT, Swing, JavaFX & SWT 3
T Auf Ende von mehreren Threads warten, ohne den EDT zu blockieren AWT, Swing, JavaFX & SWT 1
pinerski Swing Frame 1 soll auf Frame 2 warten AWT, Swing, JavaFX & SWT 4
0x7F800000 Allg. Frage zum ev. dispatch thread, wie korrekt auf reaktion der Listener warten? AWT, Swing, JavaFX & SWT 4
R JDialog "Bitte warten..." durchsichtig AWT, Swing, JavaFX & SWT 5
G JTable warten bis Spalte verschoben wurde AWT, Swing, JavaFX & SWT 2
C Warten auf Rückgabewert im EventDispatchingThread AWT, Swing, JavaFX & SWT 8
A Bitte warten Dialog AWT, Swing, JavaFX & SWT 4
G Auf Ergebnis vom Thread warten AWT, Swing, JavaFX & SWT 3
O Zwei Listener auf Komponente, warten auf Beendigun? AWT, Swing, JavaFX & SWT 2
R Warten auf Ergebnisse eines untergeordneten JFrame AWT, Swing, JavaFX & SWT 2
C Auf Ereignis warten AWT, Swing, JavaFX & SWT 7
L Warten, aber trotzdem "lebende" UI AWT, Swing, JavaFX & SWT 2
K Textfeld Programm soll auf Eingabe warten! AWT, Swing, JavaFX & SWT 4
B Auf Frame/Dialog warten AWT, Swing, JavaFX & SWT 2
J Warten auf einen Dialog? AWT, Swing, JavaFX & SWT 2
J Programm warten, bis GUI geschlossen ist AWT, Swing, JavaFX & SWT 4
F Auf Thread warten ohne alles andere zu blockieren AWT, Swing, JavaFX & SWT 5
W Auf eine Eingabe warten? AWT, Swing, JavaFX & SWT 2
N malen => 1 Sekunde warten => malen AWT, Swing, JavaFX & SWT 2
m@nu Dialog während warten anzeigen AWT, Swing, JavaFX & SWT 3
U Auf Swings Reaktion warten AWT, Swing, JavaFX & SWT 3
C JFrame warten lassen AWT, Swing, JavaFX & SWT 11
R Grafische Benutzereingabe in For-Schleife AWT, Swing, JavaFX & SWT 8

Ähnliche Java Themen

Neue Themen


Oben