我有 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/