2017-08-13 4 views
1

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.

Antwort

1

HIDING und HIDDEN bedeutet "Schließen" bzw. "Schließen", nicht minimiert (bezieht sich auf die Methode hide()).

Für eine Stage können Sie einen Listener mit der iconified property registrieren, um zu antworten, wenn es minimiert wird.