NetBeans项目

设置使用场景生成器

在第一个JavaFX示例中,我向您展示了如何使用Java代码构建GUI赢博体育程序。这种方法可以很好地演示JavaFX的基础知识,但不适用于构建更大的赢博体育程序。

为了构建更大的赢博体育程序,我们将使用一种称为FXML的替代系统。为了制作和编辑FXML GUI赢博体育程序,我们将使用场景生成器。你可以从Gluon下载Scene Builder的安装程序。

Scene Builder安装程序还应该自动将Scene Builder集成到NetBeans中。您可以通过使用NetBeans创建一个JavaFX FXML项目并双击项目中的FXML文件来验证这一点。这应该会自动启动场景生成器。

如果场景生成器没有自动启动,从Windows的NetBeans的工具菜单中选择选项,或者从Mac的NetBeans的苹果菜单中选择首选项。这将弹出NetBeans选项对话框。单击对话框顶部的Java按钮,然后单击JavaFX选项卡,弹出Scene Builder集成面板。如果没有显示到Scene Builder的路径,请选择下拉菜单中的Browse选项,浏览到安装Scene Builder的位置。

第一个例子

这些讲义顶部的FXML示例按钮链接到包含我们第一个FXML项目的存档。

这个例子中的App类包含了足够的代码来设置用户界面:

public class App extends Application {@Override public void start(Stage Stage)抛出IOException {FXMLLoader FXMLLoader = new FXMLLoader(App.class. getresource ("primary.fxml"));Scene Scene = new Scene(fxmlLoader.load(), 480,160);stage.setScene(现场);阶段。setTitle(“第一个FXML示例”);stage.show ();}公共静态void main(String[] args) {launch();}}

设置场景和舞台所需的代码与前面的示例很相似。这个赢博体育程序的不同之处在于如何设置场景的内容。在本例中,场景内容的赢博体育细节都存储在一个FXML文件中,赢博体育程序在start()方法开始时读取并加载该文件。

FXML文件主要。FXML包含有关用户界面的内容和结构的赢博体育信息。你可以在项目src/main/resources和edu.lawrence.hellofxml的Other Sources文件夹中找到这个文件。在NetBeans中双击该文件将自动启动Scene Builder。

场景生成器窗口有几个重要的部分:

您的项目还包含第三个文件,一个实现控制器类的java文件。控制器类包含操作方法,您可以将这些方法链接到接口中的各种控件。

公共类PrimaryController {@FXML TextField nameText;@FXML标签问候;@FXML无效doGreeting(ActionEvent事件){字符串名称= nameText.getText();字符串消息= "Hello, “+name+”。欢迎使用JavaFX!”greeting.setText(消息);}}

控制器类包含一个操作方法,该方法链接到接口中的唯一按钮。要将方法链接到按钮,需要做两件事。首先,该方法需要附加@FXML注释,以将该方法标识为FXML操作方法。第二个需求是按钮需要将这个特定的方法标识为按钮的操作方法。你可以在场景构建器中选择按钮,然后进入场景构建器窗口右侧的代码检查器:

在代码检查器视图中有一个部分,您可以在其中键入操作方法的名称。这指定在响应单击按钮时调用控制器类中的哪个方法。如果你展开窗口左下角的控制器视图,你可以看到Scene Builder是如何将场景链接到它的控制器类的。

回顾一下动作方法的代码,可以看到按钮的动作方法设置了场景中标签的文本内容。标签本身可以通过控制器类中的label成员变量来访问。该成员变量用@FXML注释,以表明该成员变量链接到场景中的Label组件。为了使这个链接正常工作,我们必须确保在场景构建器的代码部分设置了标签的id属性。选择Label组件并打开该组件的代码检查器显示情况就是这样:

代码部分显示,这个Label组件的id值为“greeting”,它与控制器类中成员变量的名称完全对应。

类似地,您可以看到控制器类中的代码通过nameField成员变量链接到场景中的TextField。操作方法从TextField读取文本,以便在单击按钮时构造个性化的问候语。