JavaFX:WindowEvent.WINDOW_HIDDEN

标签 java user-interface javafx eventhandler

我已经编写了自己的EventHandler,它没有做任何特殊的事情。这只是为了练习。他来了:

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");
        }

    }

}

我对最后一个 du if 有问题。 WINDOW_HIDDEN 和 WINDOW_HIDING 似乎不起作用,因为当我最小化窗口时,System.out 永远不会发生。其他 3 个事件有效。而且最上面的 System.out 不会发生,这意味着该事件永远不会发生。我在主类中添加了如下事件处理程序:

stage.addEventHandler(WindowEvent.ANY, new JavaFXMyWindowListener());

我找到了以下解决方法:

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");
          }
      }
});

它正在做我想做的事情,但为什么 WINDOW_HIDDEN 和 WINDOW_HIDING 不起作用?我不明白,请帮忙。谢谢并致以问候。

最佳答案

HIDINGHIDDEN 分别表示“关闭”和“关闭”,未最小化(指的是 hide() 方法) 。

对于 Stage,您可以使用 iconified property 注册监听器。最小化时响应。

关于JavaFX:WindowEvent.WINDOW_HIDDEN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45660688/

相关文章:

java - 检测 WebView 中的超链接悬停并打印链接

java - 异常 java.lang.NoSuchMethodError : org. apache.wicket.AttributeModifier.append(Ljava/lang/String;Ljava/io/Serializable;)

java - 使用 Java 执行在执行期间接受输入的 shell 脚本

java - Hibernate 返回基类的代理

java - Netbeans GUI 设计器和固定大小的应用程序面板

java - DataFormatException : incorrect header check in java. util.zip.InflaterInputStream

java - 知道它来自哪个类(class)

python - 是否有 Python 的可视化分析器?

java - 单击时如何复制 SmartGWT 悬停文本的外观/功能

JavaFX - 生成 App Jar 时不显示虚拟键盘