JavaFX JavaFX-Dialog aus einer Nicht-JavaFX-Anwendung heraus

Goldi

Aktives Mitglied
Servus Gemeinde!
Klassischer Anwendungsfall: Ich möchte aus irgendeiner Anwendung heraus (nicht zwangsweise JavaFX) einen kurzlebigen Dialog auf den Bildschirm zeigen und die Antwort des Users durch Klick auf einen Button in Empfang nehmen (z. B.: "Willst Du die Datei wirklich löschen?", Buttons: Ja, Nein). Ich habe viel versucht und auch gelernt, das Problem, dass die "irgendeine Anwendung" aber nicht mehr an die Antwort des Button-Klicks kommt, noch nicht lösen können. Das ganze habe ich grafisch versucht zu beschreiben, sonst wird der Text zu lang ;-) - siehe Anhang. Fragen dazu: Gibt es nicht doch in JavaFX eine Lösung oder ist es besser, hier doch auf einen Oldie (Swing, AWT) auszuweichen?
Herzlichen Gruß
Stefan
 

Anhänge

  • JavaFXDialog.gif
    JavaFXDialog.gif
    82,9 KB · Aufrufe: 50
Das Problem ist evtl. dass du ab Java 11 (seit gestern verfügbar) kein JavaFX mehr integriert hast, d.h. du muss die Dependencies selbst mitbringen (mal hier anschauen https://openjfx.io/ -> installierbar, oder via Maven/Gradle Dependency möglich). AWT/Swing bleibt (leider) vorerst noch im JDK enthalten.

Ansonsten aber musst du als erstes das Toolkit initialisieren. Altbekanntes "Problem", da normalerweise der Start einer JavaFX-Application das macht. Hier musst du das forcieren.
https://stackoverflow.com/questions/11273773/javafx-2-1-toolkit-not-initialized

Lösung also: Bevor du einen Dialog anzeigen kannst, erst mal new JFXPanel(); vom Swing-EDT aus aufrufen (Ja, ohne Inhalt!)

Java:
SwingUtilities.invokeLater(() -> {
  new JFXPanel(); // muss nur einmal gemacht werden, kannst dir also morgen, ob das schon gemacht wurde
  Platform.runLater(() -> {
    // Dialog anzeigen
  });
});
 

Zurück
Oben