JavaFX中如何通过控制器代码点击按钮关闭JFXNodesList
解决JFXNodesList点击按钮关闭(融合)的问题
嘿,我之前在JavaFX 8搭配JFoenix 8.0.3的项目里正好用过JFXNodesList,这个需求很容易实现!
核心思路
JFXNodesList本身提供了专门的方法来触发关闭(融合)动画,你只需要在按钮的点击事件里调用这个方法就行。
具体步骤
在控制器中注入JFXNodesList
首先确保你的控制器类里通过@FXML注解拿到FXML中定义的algorithmList组件:@FXML private JFXNodesList algorithmList;绑定按钮点击事件
你有两种方式给按钮绑定点击逻辑:- 方式一:在FXML中直接绑定到控制器的方法
给按钮添加onAction属性,指向控制器里的处理方法:<JFXButton text="关闭算法列表" onAction="#closeAlgorithmList" layoutX="285.0" layoutY="180.0" /> - 方式二:在控制器的
initialize()方法中动态绑定
如果更习惯在Java代码里处理事件,可以这样写:@FXML private JFXButton closeButton; // 假设按钮的fx:id是closeButton @FXML private void initialize() { closeButton.setOnAction(event -> algorithmList.close()); }
- 方式一:在FXML中直接绑定到控制器的方法
实现关闭逻辑
在控制器的事件处理方法里,调用JFXNodesList的close()方法,这个方法会自动执行融合动画,把列表收回去:@FXML private void closeAlgorithmList(ActionEvent event) { // 触发融合关闭动画 algorithmList.close(); }
额外说明
- 如果列表已经处于关闭状态,调用
close()方法不会有任何异常,JFoenix会自动处理这种情况。 - 要是你想自定义关闭动画,可以用
algorithmList.setCloseAnimation()方法传入自定义的Timeline对象,但默认的动画效果已经足够贴合“融合”的需求了。
内容的提问来源于stack exchange,提问作者Toumi
相关产品推荐
相关产品推荐

