WindowBuilder 与 JavaFX Scenebuilder 按钮操作?

WindowBuilder vs. JavaFX Scenebuilder Button Action?

我已经成功安装了e(fx)clipse插件到eclipse和Scenebuilder 8.0,它们集成的很好。我以前一直使用和开发 GUI 应用程序与 Swing,在 WindowBuilder 插件的帮助下,它非常简单方便,但现在我必须使用 JavaFX 开发应用程序,这就是我安装 SceneBuilder 的原因。例如,在 WindowBuilder 中,当我右键单击一个按钮时,可以向它添加一个动作,然后切换到代码并同时开发,动作块是在代码中的按钮下自动创建的。但是在 Scene Builder 中,当我想添加一个动作并在代码中编辑它时,我失败了,这里是我的样子:

下面是我在 Internet 上找到的示例的样子:

我没有看到选择操作或 handleButtonAction 的箭头。 我只想像使用旧的 WindowBuilder 一样使用 SceneBuilder,这可能吗?能否赐教,我做错了什么?

WindowBuilder 通过拖放 UI 元素创建 Java 代码,而 SceneBuilder 创建 FXML。因此,我们没有选择 向其添加操作然后直接切换到代码 的选项。

Swing 允许我们使用 Java 代码创建 UI,这使得设计人员很难更改视图。 JavaFX 通过将视图与代码分离,采用对设计人员更友好的方法。 JavaFX 中的视图是一个单独的实体,可以使用 CSS 和 FXML 进行设计/更改。

James_D 在他的评论之一中说:

JavaFX follows more of a MVP-style architecture, where the view is basically passive and is manipulated by the presenter ("controller").

基本上,JavaFX 中的每个视图都有一个对应的控制器(Java 文件)。

此控制器用于以下用途:

  1. 使用 fx:id.
  2. 实例化 FXML 中定义的控件和布局以及为它们定义的属性
  3. 将控件事件绑定到适当的处理程序,其名称在 FXML 中定义,主体在控制器中定义。

FXML 是使用 FXMLLoader 加载的,FXMLLoader 又实例化了控制器。控制器 class 在 FXML 中由 fx:controller 标识。

How do you handle actions of the UI elements ?

您将操作作为方法添加到控制器中。

对于您使用 onAction 为 handleButtonAction 的 Button 创建的上述 FXML,您需要在控制器中创建一个具有此名称的方法。

public void handleButtonAction(ActionEvent action) {

   // Do you action 

}

一些不错的读物:

  • Why Use FXML
  • FXML full reference
  • Starting on JavaFX - JavaFX version and “development patterns” questions