Hallo Freunde der Nacht,
Ich habe mir einen eigenen EventHandler geschrieben, der macht nichts schlaues, sondern dient nur Testzwecken um mein Verständniss zu verbessern. So sieht er aus:
Das Problem bezieht sich auf die letzten beiden If Anweisungen. WINDOW_HIDDEN & WINDOW_HIDING scheinen nicht zu funktionieren. Wenn ich diese Aktionen durchführe, kommt das entsprechende System out nicht, bei den anderen drei Event Typen scheint das aber zu funktionieren. Sogar das oberste System.out ersscheint beim minimieren des Fensters nicht. Somit scheint das Event ja nicht einmal an den Handler zu kommen. Ich hab den EventHandler folgendermaßen hinzugefügt:
Ich habe ein Workaround gefunden, das funktioniert wen man es in der Hauptklasse an die Stage anfügt, das sieht so aus:
Aber muss ich das wirklich so machen? wozu gibt es denn WINDOW_HIDDEN & WINDOW_HIDING wenn sie nicht funktionieren? Danke für eure Hilfe.
Ich habe mir einen eigenen EventHandler geschrieben, der macht nichts schlaues, sondern dient nur Testzwecken um mein Verständniss zu verbessern. So sieht er aus:
Java:
import javafx.event.EventHandler;
import javafx.stage.WindowEvent;
public class JavaFXMyWindowListener implements EventHandler<WindowEvent>{
@Override
public void handle(WindowEvent event) {
System.out.println("WindowEvent: " + event.getEventType());
if(event.getEventType() == WindowEvent.WINDOW_CLOSE_REQUEST){
System.out.println("Das Fenster wird geschlossen");
event.consume();
}
if(event.getEventType() == WindowEvent.WINDOW_SHOWING){
System.out.println("Window aktiv");
}
if(event.getEventType() == WindowEvent.WINDOW_SHOWN){
System.out.println("Das Fenster wurde geoeffnet");
}
if(event.getEventType() == WindowEvent.WINDOW_HIDDEN){
System.out.println("Das Fenster wurde minimiert");
}
if(event.getEventType() == WindowEvent.WINDOW_HIDING){
System.out.println("Das Fenster wird minimiert");
}
}
}
Java:
stage.addEventHandler(WindowEvent.ANY, new JavaFXMyWindowListener());
Ich habe ein Workaround gefunden, das funktioniert wen man es in der Hauptklasse an die Stage anfügt, das sieht so aus:
Java:
stage.iconifiedProperty().addListener(new ChangeListener<Boolean>() {
@Override public void changed(ObservableValue<? extends Boolean> prop, Boolean oldValue, Boolean newValue) {
System.out.println("Iconified? " + newValue);
}
});
Aber muss ich das wirklich so machen? wozu gibt es denn WINDOW_HIDDEN & WINDOW_HIDING wenn sie nicht funktionieren? Danke für eure Hilfe.