在JFoenix风格下setOnCloseRequest不起作用

本文探讨了在使用JavaFX和JFoenix时遇到的问题:即setOnCloseRequest方法在JFoenix风格下无法正常执行。分析了问题产生的原因,并提供了解决方案,包括修改JFXDecorator中的关闭行为。

问题描述:使用原生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(); });

转载于:https://my.oschina.net/zhanggongming/blog/736944

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值