Ich habe meinen eigenen EventHandler geschrieben, der nichts besonderes macht. Es ist nur zum üben. Hier kommt er:JavaFX: WindowEvent.WINDOW_HIDDEN
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("Window closed");
event.consume();
}
if(event.getEventType() == WindowEvent.WINDOW_SHOWING){
System.out.println("Window activ");
}
if(event.getEventType() == WindowEvent.WINDOW_SHOWN){
System.out.println("Window opened");
}
if(event.getEventType() == WindowEvent.WINDOW_HIDDEN){
System.out.println("Window minimized");
}
if(event.getEventType() == WindowEvent.WINDOW_HIDING){
System.out.println("Window is going to be minimized");
}
}
}
Ich habe Probleme mit dem letzten du if. WINDOW_HIDDEN & WINDOW_HIDING scheint nicht zu funktionieren, da das System.out nie passiert, wenn ich das Fenster minimieren. Die anderen 3 Events funktionieren. Auch die oberste System.out tritt nicht auf, dh das Ereignis passiert nie. Ich habe den Eventhandler hinzugefügt, wie in der Mainclass folgen:
stage.addEventHandler(WindowEvent.ANY, new JavaFXMyWindowListener());
Ich habe die folgende Abhilfe gefunden:
stage.iconifiedProperty().addListener(new ChangeListener<Boolean>() {
@Override public void changed(ObservableValue<? extends Boolean> prop, Boolean oldValue, Boolean newValue) {
if(newValue){
System.out.println("Window minimized");
}else{
System.out.println("Window was minimized and gets back now");
}
}
});
Es ist zu tun, was ich tun wollte, aber warum tut WINDOW_HIDDEN & WINDOW_HIDING funktioniert nicht mehr? Ich verstehe nicht, bitte helfen. Danke und Grüße.