JavaFX动态添加按钮

标签 java javafx fxml

我有 fxml 和 Controller 类。在 Controller 类中我有 someAction()方法并在 fxml 中设置 #someAction作为某些按钮的 onAction。现在我想不在 fxml 中创建按钮,而是从 java 代码动态创建按钮,如 button = new Button() 。我仍然加载 fxml 并且我仍然有这个 Controller someAction()方法。如何设置someAction()作为我的按钮的 onAction ?从java代码我只找到setOnAction(EventHandler<ActionEvent> eh) 。有没有办法以类似 fxml 的方式指定 onAction,只需告诉 Controller 类中的方法名称?

最佳答案

其中一种方法可以是:

private EventHandler<ActionEvent> yourHandler = new EventHandler<>() {
     public void handle(ActionEvent event) {
         // your logic
     }
};

然后

button.setOnAction(yourHandler);

public void someAction(ActionEvent event) {
    yourHandler.handle(null);
}

或者以相同的方式,定义业务逻辑方法并在两个不同的操作事件处理程序中调用它。

关于JavaFX动态添加按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25930944/

相关文章:

java - 为什么我的 Controller 类中的事件没有触发

JavaFX切换BorderPane的中心: Buttons only work once

java - 如何从返回两个不同值的 swingworker 更新 GUI

amazon-web-services - 安装 Open JDK 和 SunJDK 并在启动应用程序时选择

math - 用于游戏开发的三角数学

java - 使用 Prism.js 在 WebView 中显示 HTML

java - 我想检索联系人的联系人照片。我该怎么做?

java - 用于比较父类(super class)和子类的 Hamcrest 匹配器

JavaFX - 在表格 View 中移动列

java - 在 start 方法中与 FXML 元素交互时如何修复 NullPointerException?