Heim >Java >javaLernprogramm >Können Sie die Aufrufbeschränkung von JavaFX launch() umgehen?
Die JavaFX-Methode launch() initiiert, wie der Name schon sagt, die grafische Benutzeroberfläche (GUI) der Anwendung. Allerdings unterliegt die Methode launch() einer strengen Einschränkung: Sie kann nicht mehr als einmal aufgerufen werden. Jeder nachfolgende Versuch, launch() aufzurufen, führt zu einer IllegalStateException.
Diese Einschränkung ergibt sich aus der zugrunde liegenden Thread-Sicherheit von JavaFX. Sobald die GUI der Anwendung initialisiert ist, ist es wichtig, die Thread-Sicherheit während der gesamten Lebensdauer der Anwendung aufrechtzuerhalten. Das mehrmalige Aufrufen von launch() würde diese Thread-Sicherheit gefährden und zu unerwartetem Verhalten oder sogar Anwendungsabstürzen führen.
Trotz der Beschränkung auf mehrere launch()-Aufrufe gibt es welche praktische Lösungen für Anwendungen, die regelmäßig GUI-Fenster anzeigen müssen.
Beispielimplementierung
Der folgende Code kapselt die oben beschriebenen Strategien:
<code class="java">public class RendezvousApplication extends Application { // Singleton JavaFX component private static Scene primaryScene; @Override public void start(Stage primaryStage) throws Exception { // Initialize primaryScene on first launch if (primaryScene == null) { primaryScene = createScene(); } // Attach scene to Stage primaryStage.setScene(primaryScene); primaryStage.show(); } private Scene createScene() { return new Scene(new Label("Rendezvous Window"), 400, 300); } // Called when GUI is closed @Override public void stop() throws Exception { super.stop(); Platform.setImplicitExit(false); } // Launch GUI from another thread public static void displayWindow() { Platform.runLater(() -> { if (primaryScene == null) { launch(RendezvousApplication.class); } else { Stage newStage = new Stage(); newStage.setScene(primaryScene); newStage.show(); } }); } }</code>
Dieser Code zeigt, wie Sie die JavaFX-Laufzeitumgebung am Leben halten, sodass Sie Fenster aus verschiedenen Threads anzeigen können, ohne dass mehrere launch()-Aufrufe erforderlich sind.
Während die launch()-Methode von JavaFX ihre Grenzen hat, verstehen Sie, wie Die Umgehung dieser Einschränkungen ist für die Erstellung robuster, skalierbarer JavaFX-Anwendungen unerlässlich.
Das obige ist der detaillierte Inhalt vonKönnen Sie die Aufrufbeschränkung von JavaFX launch() umgehen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!