2017-06-19 4 views
1

Ich habe eine GUI in Swing entwickelt. Der Konstruktor der GUI wird von einer anderen Java-Klasse aufgerufen, die die Hauptfunktion für das Java-Paket enthält.Halten Sie den Fluss des Java-Programms

Der Anwendungsfall ist nach dem Öffnen der GUI der Fluss der Java-Klassendatei sollte gestoppt werden, bis der Rahmen durch Klicken auf die Schaltfläche "Fertig stellen" geschlossen wird, da die Ausgabe der UI eine Liste von Strings ist, die von verwendet wird funktioniert später.

Ich versuchte mit InvokeAndWait und Swing-Schlaf und beide nicht funktioniert. Alle Vorschläge (nicht der Code) zur Implementierung des Anwendungsfalls.

+3

Verwenden Sie dazu einen modalen JDialog wie einen JOptionPane. –

+0

@HovercraftFullOfEels könnten Sie bitte ein wenig ausarbeiten? –

+1

@ vikky2405 Nun, Sie könnten einfach eine schnelle Schutzbrille für [java modal dialog] machen (https://www.google.com.au/search?q=java+modal+dialog&oq=java+modal+dialo&aqs=chrome.0.0 j69i57j0l4.2597j0j9 & sourceid = chrome & ie = UTF-8) und sehen, was Sie finden, oder Sie könnten SO nach einer ähnlichen Suchanfrage suchen, die Sie wahrscheinlich zu [Wie man Dialoge erstellt] führt (https://docs.oracle.com/javase/ Anleitung/uiswing/Komponenten/Dialog.html) – MadProgrammer

Antwort

0

In Fall JDialog oder JOPtionPane sind nicht das, was Sie verwenden möchten. Sie können:

1) Erstellen Sie eine Observer.

2) Erstellen Sie Ihre GUI aus dem Haupt-Thread, übergeben Sie Observer, und starten Sie es auf EDT mit invokeLater.

3) Verwenden Sie CompletableFuture, um zu warten, bis die GUI Observer.update(list of strings) zurückruft, wenn Sie auf die Schaltfläche "Fertig stellen" klicken.

4) Erhalten Sie Ihre Liste der Zeichenfolgen von Observer.

Siehe diesen Link, wie es gemacht wird Java implementation to handle callback messages.

Verwandte Themen