当前位置: 首页 > 知识库问答 >
问题:

javafx将fx:id传递给fxml onAction方法中的控制器或参数

白通
2023-03-14

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

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

感谢您的帮助,

共有1个答案

松锐藻
2023-03-14

只调用一个处理程序,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
        }
    }
}
 类似资料:
  • 问题内容: 我有多个调用同一控制器的路由,我想将不同的变量传递给它。 我知道我可以使用“解决”对象: 传递值作为依赖项: 这种方法的问题是,如果其他路线上缺少resolve对象,则我的应用程序崩溃,并且我想传递可选的参数。 有什么方法可以(从路由提供者)将特定的参数传递给Controller? 谢谢 问题答案: 路由: 访问:在控制器中注入$ route,然后使用它

  • 问题内容: 我有一个登录屏幕,我想将登录ID从LoginController传递到MainController,因此我可以访问一些功能来更改密码和其他功能。 我这样加载控制器: Main.fxml绑定到MainController.java。有没有一种方法可以传递所需的用户ID,并在控制器的initialize()方法上对其进行访问? 问题答案: 用FXMLLoader加载控制器后,可以在调用sh

  • 问题内容: 我的图像是我试图将数据(变量)从一个阶段传递到另一阶段,但是当我尝试在第二阶段访问它们时,它们为空。mainWindow的代码。前往window1 // window1类: 如果我想访问以前收到的标题,则为null 初始化显示应该为“ Window1”时显示为null} 问题答案: 在加载FXML文件的过程中,将调用该方法-换句话说,在调用时将调用该方法。 显然,这是 在 调用 之前

  • 我试图将一个参数传递给我的@RESTController-Spring Boot类。 在@POSTMapping方法中,我想使用自定义Java类的方法来处理接收到的正文并返回响应。 Spring应用程序在应用程序中启动。Java语言控制器对象似乎是隐式创建的。 我已经尝试将构造函数添加到我的RESTController类中。但是我找不到用参数调用该构造函数的方法。 尽管我可以定义第二个构造函数,但

  • 问题内容: 我正在尝试使用JQuery Ajax将表单的数据传递到我的控制器方法,但是由于在Controller Side上使用调试器时ViewModel为null,因此我不确定如何执行此操作。 我的ViewModel是: 前提是我数据库中的实体/表。 该表单包含“前提”表中的字段。 在我的javascript函数中,我这样做: 但是,当我在方法中检查viewModel参数时,它为null: 关于

  • 问题内容: 我有以下任意JSON对象(字段名称可能会更改)。 -- 我知道我可以像定义具有相同字段名的JSON对象那样定义类,但是我希望控制器接受具有不同字段名的任意JSON对象。 问题答案: 如果您想将自定义JSON对象传递给MVC操作,则可以使用此解决方案,它的工作原理很吸引人。 该解决方案的真正好处是,您不需要为每个参数组合定义一个新类,并且除此之外,您可以轻松地将对象转换为其原始类型。 更