【问题标题】:javafx pass fx:id to controller or parameter in fxml onAction methodjavafx 将 fx:id 传递给控制器​​或 fxml onAction 方法中的参数
【发布时间】:2012-12-29 19:17:17
【问题描述】:

有什么方法可以将参数传递给 fxml 文件中的 onAction 方法?或者,我可以以某种方式获取调用 onAction 方法的组件的 fx:id 吗?

我有几个按钮应该做同样的事情,比如 5 个 ID 为 button1 - button5 的按钮,当按下时,应该打印相应的数字 1-5。我不希望有 5 个与此变量相同的 onAction 方法。

任何帮助表示赞赏,

【问题讨论】:

    标签: binding controller javafx


    【解决方案1】:

    只调用一个处理程序,actionEvent.source 是发起事件的对象。

    试试这个:

    myButton1.setOnAction(new MyButtonHandler());
    myButton2.setOnAction(new MyButtonHandler());
    
    private class MyButtonHandler implements EventHandler<ActionEvent>{
        @Override
        public void handle(ActionEvent evt) {
            if (evt.getSource().equals(myButton1)) {
              //do something
            } else if (evt.getSource().equals(myButton2)) {
              //do something
            }
        }
    }
    

    或者:

    myButton1.addEventHandler(ActionEvent.ACTION, new MyButtonHandler());
    myButton2.addEventHandler(MouseEvent.CLICKED, new MyButtonHandler());
    
    private class MyButtonHandler implements EventHandler<Event>{
        @Override
        public void handle(Event evt) {
            if (evt.getSource().equals(myButton1)) {
              //do something
            } else if (evt.getSource().equals(myButton2)) {
              //do something
            }
        }
    }
    

    【讨论】:

    • @DmitryNelepov 我正在用一些例子编辑答案,希望对你有所帮助。
    猜你喜欢
    • 2013-06-25
    • 1970-01-01
    • 2013-05-20
    相关资源
    最近更新 更多