2 Stages gleichzeitig öffnen

AurI

Mitglied
Ich möchte gerne 2 stages parallel öffnen. Ich dachte mir, ich löse das mit Threads, bin mir allerdings nicht im Klaren darüber, wie ich diese dann launche. Es geht ja immer nur ein launch.

Ich habe eine Main methode, die eigentlich nichts anderes macht, als die beiden Threads zu starten.
Java:
public class Main {

    public static void main(String[] args) {

        Thread thread1 = new Thread(new FirstThread());
        thread1.start();
        
        Thread thread2 = new Thread(new SecondThread());
        thread2.start();
    }
}

Dann zwei mehr oder weniger identische Klassen FirstThread und SecondThread, in denen eine stage initialisiert und gestartet wird. Hier mal nur der Code für FirstThread:
public class FirstThread extends Application implements Runnable {
Java:
    @Override
    public void start(Stage primaryStage) {
        try {
            Parent root = FXMLLoader.load(getClass().getResource("xxx.fxml"));
            Scene scene = new Scene(root);
            primaryStage.setScene(scene);
            primaryStage.show();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
    
    public void run() {
        FirstThread.launch(FirstThread.class);
    }
}
Das wäre aber wohl zu einfach gewesen, denn wenn ich Main starte bekomme ich folgende Fehlermeldung:
"Application launch must not be called more than once"

Das muss also irgendwie anders gehen, ich hab nur keine Ahnung, wie. Kann mir jemand helfen?
 
Ich möchte gerne 2 stages parallel öffnen. Ich dachte mir, ich löse das mit Threads
Das UI läuft in einem einzigen Thread, dem UI-Thread, bzw. unter AWT/Swing auch Event Dispatch Thread genannt. Daran änderst Du auch nichts, wenn Du fünf weitere Threads erzeugst.

Du brauchst nur ein neues Stage-Objekt zu erzeugen.
 
Wichtig ist: nicht die launch-Methode einer Application verwenden, sondern selbst eine neue Stage erstellen und dann quasi nur den Teil, der in der start-Methode einer Application-Klasse enthalten ist, ausführen - also inklusive stage.show().
 

Zurück
Oben