You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为JavaFX自定义控件添加Scene Builder的On Action选项?

解决Scene Builder 2.0中自定义SliderSwitch控件不显示On Action选项的问题
  • 严格遵循JavaFX属性规范并添加FXML注解
    Scene Builder识别控件的可绑定事件,完全依赖符合标准的属性定义和注解。你需要确保onAction属性的实现满足以下要求:

    1. 定义ObjectProperty<EventHandler<ActionEvent>>类型的属性,命名为onActionProperty
    2. 配套实现setOnAction和getOnAction方法
    3. 给setOnAction方法添加@FXML注解——这是Scene Builder识别该事件选项的关键

    示例代码:

    import javafx.event.ActionEvent;
    import javafx.event.EventHandler;
    import javafx.fxml.FXML;
    import javafx.scene.control.Control;
    import javafx.beans.property.ObjectProperty;
    import javafx.beans.property.SimpleObjectProperty;
    
    public class SliderSwitch extends Control {
        private final ObjectProperty<EventHandler<ActionEvent>> onAction = new SimpleObjectProperty<>();
    
        @FXML
        public void setOnAction(EventHandler<ActionEvent> handler) {
            onAction.set(handler);
        }
    
        public EventHandler<ActionEvent> getOnAction() {
            return onAction.get();
        }
    
        public ObjectProperty<EventHandler<ActionEvent>> onActionProperty() {
            return onAction;
        }
    
        // 控件触发动作时调用此方法,分发事件
        private void fireAction() {
            ActionEvent event = new ActionEvent(this, null);
            EventHandler<ActionEvent> handler = onAction.get();
            if (handler != null) {
                handler.handle(event);
            }
        }
    }
    
  • 重新导入控件并刷新Scene Builder
    完成代码修改和编译后,需要:

    1. 在Scene Builder的库面板中移除旧的SliderSwitch控件
    2. 通过Library -> Import JAR/FXML File重新导入编译后的控件类文件
    3. 将新导入的控件拖拽到场景,再查看Code标签下的On Action选项
  • 检查版本兼容性
    Scene Builder 2.0对JavaFX 8的支持最稳定,如果你的控件基于更高版本JavaFX开发,可能出现识别异常,建议统一使用JavaFX 8环境。

内容的提问来源于stack exchange,提问作者StealthRT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 17:52:02