【问题标题】:WindowBuilder vs. JavaFX Scenebuilder Button Action?WindowBuilder 与 JavaFX Scenebuilder 按钮操作?
【发布时间】:2016-01-20 06:02:48
【问题描述】:

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

以下是我在互联网上找到的示例的外观:

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

【问题讨论】:

    标签: java eclipse javafx scenebuilder windowbuilder


    【解决方案1】:

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

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

    James_D 在他的一个 cmets 中说过:

    JavaFX 更多地遵循 MVP 风格的架构,其中视图基本上是被动的,由演示者(“控制器”)操作。

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

    这个控制器用于以下事情:

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

    使用 FXMLLoader 加载 FXML,FXMLLoader 反过来实例化控制器。控制器类由 FXML 中的fx:controller 标识。

    您如何处理 UI 元素的操作?

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

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

    public void handleButtonAction(ActionEvent action) {
    
       // Do you action 
    
    }
    

    一些不错的读物:

    【讨论】:

    • 非常感谢您的回答,现在它正在工作,但这是否意味着我必须手动创建所有操作并手动将它们一一手动分配给按钮等?
    • 与WindowBuilder相比,这很不方便,难道没有什么办法可以解决问题吗?
    猜你喜欢
    • 2018-08-27
    • 2014-11-22
    • 2015-06-06
    • 1970-01-01
    • 2015-12-02
    • 2018-11-18
    • 2018-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多