在JFoenix风格下setOnCloseRequest不起作用

原创
2016/08/24 09:35
阅读数 386

问题描述:使用原生javaFX风格的界面的时候setOnCloseRequest方法可以正常执行,但是在JFoenxi风格下面该方法不执行。

问题分析:从以下语句可以看出: JFXDecorator decorator = new JFXDecorator(stage, container.getView()); decorator.setCustomMaximize(true); Scene scene = new Scene(decorator, 800, 800); 这里的Scene是通过JFXDecorator来初始化的,在JFXDecorator中对stage的关闭做了封装,当点击关闭按钮的时候,实际执行的是: private ObjectProperty<Runnable> onCloseButtonAction = new SimpleObjectProperty<>(() -> { Platform.exit(); }); 这里可以看出,直接退出了平台,不能再对setOnCloseRequest方法进行扩展了。

解决办法:改变JFXDecorator中的关闭平台方法,如下: private ObjectProperty<Runnable> onCloseButtonAction = new SimpleObjectProperty<>(() -> { // Platform.exit(); System.out.println("hello world!!!"); // primaryStage.hide(); }); 这样,当点击系统的关闭按钮的时候,就可以在关闭请求里面执行其它方法了。

setOnCloseRequest 方法原型: stage.setOnCloseRequest((e) -> { System.out.println("don't close me!"); e.consume(); });

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
在线直播报名
返回顶部
顶部