[JavaFX] Fenster fokussieren?
Idee:
2. Fenster öffnet sich, wenn ein Icon angeklickt wird > darauf hin kann es kein 2. Mal geöffnet werden, sondern das 2. Fenster wird wieder hervorgehoben:
public Info_OpenInfoWindow() throws IOException {
Stage info = new Stage();
if (getMainInstance.getInfoWindowCounter() == 0) {
getMainInstance.setInfoWindowCounter(1);
info.setAlwaysOnTop(true);
...
} else {
if (!info.isFocused()) info.toFront();
System.out.println(info.isFocused());
}
}
Jedoch wird mir immer false (Z. 8) wiedergegeben, weil das Fenster ja nicht fokussiert ist. Wie kann ich das bereits geöffnete Fenster wieder hervorheben?
Mit
info.show();
würde einfach ein weiteres Standardfenster ohne Inhalt geöffnet werden.
Auch
info.requestFocus();
ist keine Lösung, oder ich wende es falsch an.
1 Antwort
Wenn du einem Fenster (Stage) einen Owner zuordnest (also einem Elternfenster), dann wird es beim Öffnen über seinem Owner angezeigt.
Stage info = new Stage();
info.initOwner(yourParentStage);
info.initModality(Modality.WINDOW_MODAL);
info.showAndWait();
Zusätzlich kannst du festlegen, dass (Eingabe-)Ereignisse auf anderen Fenstern so lange blockiert werden, wie es geöffnet ist. Das würde also auch bedeuten, dass der Nutzer kein zweites Fenster dieses Typs öffnen kann, denn dazu müsste er ja das Icon im Hauptfensters anklicken können.