NetBeans项目

建议阅读:14.3,14.4,15.1-15.6

什么是JavaFX?

JavaFX是Java类库中的一组类,用于构造图形用户界面(GUI)赢博体育程序。

这些课堂讲稿以及上面列出的建议阅读材料将带您了解创建JavaFX赢博体育程序的基础知识。

使用NetBeans制作第一个JavaFX赢博体育程序

NetBeans设置为使用几个不同的构建系统来构建赢博体育程序。最简单的构建系统是Ant。您在CMSC 150中创建的每个项目都使用该构建系统。由于JavaFX赢博体育程序需要我们引入额外的组件来构建赢博体育程序,因此从JavaFX开始,我们将切换到使用NetBeans中可用的下一个最强大的构建系统,Maven。Maven能够在构建赢博体育程序时自动下载赢博体育程序所需的其他组件。

要设置第一个简单的JavaFX项目,首先选择New project…从NetBeans的“文件”菜单中。在出现的新项目对话框中,选择Java with Maven类别,然后单击“Simple JavaFX Maven原型”。

这将为您提供一个已经包含一些JavaFX代码的项目,以实现一个简单的GUI赢博体育程序。

编辑pom.xml文件

由于这是我们用Maven构建系统构建的第一个项目,因此我们第一次必须处理一个特殊的配置文件,即pom.xml文件。在项目的底部,您将看到一个project Files文件夹。在该文件夹中是pom.xml文件。该文件是Maven构建过程的配置文件,包含重要的项目设置。

第一个需要注意的设置是这样的:

<属性> < project.build.sourceEncoding > < / project.build utf - 8。sourceEncoding> </maven.compiler.source> 23</maven.compiler.source> </maven.compiler.target> 23</maven.compiler.target> </properties>

这里的设置决定了我们将在项目中使用哪个版本的Java。如果这些版本号没有设置为23,我们需要将这些版本号更改为23。

在本节下面,您将看到依赖项(项目所依赖的附加库)和插件(在构建过程中发挥作用)的条目。这些附加元素中的许多都包含版本号,这里您需要再次确保相关的版本号也设置为23。

在更正了pom.xml中的设置后,就可以继续运行项目了。

第二个例子

当您要求NetBeans创建一个简单的Maven JavaFX赢博体育程序时,您得到的第一个示例项目是相当小的。这个例子完成了JavaFX所要求的最低限度的工作,设置了一个舞台、舞台中的一个场景和场景中的一个标签。

在下一个示例中,我们将查看一个具有一些更有趣元素的JavaFX赢博体育程序。我们的下一个示例将包含一个用户可以单击的按钮,这样我们就可以开始了解JavaFX如何处理简单的用户交互。

按照上面小节中概述的过程创建一个新的JavaFX赢博体育程序。用以下代码替换App类中的start()方法:

public void start(Stage primaryStage) {Button btn = new Button();btn。setext ("Say 'Hello World'");StackPane root = new StackPane();VBox box = new VBox();box.getChildren阀门()(btn);Label = new Label();box.getChildren阀门()(标签);root.getChildren阀门()(盒);btn。setOnAction(新ClickHandler(标签);场景场景=新场景(根,300,250);primaryStage。setTitle(“Hello World !”);primaryStage.setScene(现场);primaryStage.show ();}

同样,在App.java文件的底部插入以下类的代码:

类ClickHandler实现EventHandler<ActionEvent>{公共ClickHandler(Label Label){这。Label =标签;}公共无效处理(ActionEvent evt){标签。setText(“Hello, World !”);} private Label Label;}

JavaFX赢博体育程序中的公共元素

赢博体育JavaFX赢博体育程序都包含以下元素:

  1. 一个主窗口,在JavaFX中称为stage。
  2. 舞台上至少有一个场景。
  3. 在场景中组织GUI元素的窗格和框系统。
  4. 一个或多个GUI元素,如按钮和标签。

设置场景的通常步骤是自下而上地构建它。首先,我们制作GUI元素,然后制作框和窗格来组织元素,最后我们将赢博体育内容放入场景中。

赢博体育JavaFX元素,比如包含其他元素的框和窗格,都有一个子列表,我们可以通过getChildren()方法访问它。我们通过向子列表中添加元素来将元素放入其他元素中。在上面的代码中,您可以看到按钮和标签对象被添加为VBox的子对象,而VBox反过来被设置为StackPane的子对象。

除了设置窗口的结构外,我们还调用用于设置各种元素属性的方法。例如,本例中的代码使用按钮的setText()方法来设置按钮将显示的文本。

响赢博体育户事件

要使GUI赢博体育程序具有交互性,各种元素(如按钮)必须能够响应来自用户的交互,例如单击。在GUI赢博体育程序中,用户操作(如鼠标单击和按键)称为事件。为了设置一个元素(如按钮)来响赢博体育户事件,我们安排将特殊的事件处理代码连接到按钮。

我们的第一个示例演示了在JavaFX中做到这一点的一种方法。第一步是通过按钮的setOnAction()方法将一个对象作为按钮的事件处理程序连接到按钮。这里的要求是,我们链接到按钮的对象必须实现一个特定的接口,即EventHandler 接口。该接口中有一个方法,即当用户单击按钮时调用的handle()方法。

为了让事件处理程序代码做一些有用的事情,它通常需要访问场景中的一个或多个元素,这些元素将受到按钮单击的影响。在本例中,单击按钮将触发场景中标签中显示的文本的更改。为了使这一切正常工作,我们设置的类需要有一个成员变量,该变量是对标签对象的引用。handle()中的代码将使用该引用在用户单击按钮时更改标签中显示的文本。

处理事件的更好方法

尽管将事件处理程序链接到按钮的过程相当简单,但还是有点笨拙。当我们开始构建带有许多需要事件处理程序的按钮的赢博体育程序时,这个过程会变得更加繁琐。为了解决这个问题,JavaFX允许我们使用一种更简单的机制来设置事件处理程序。

要了解该机制是如何工作的,请完全删除ClickHandler类,并将start()中调用按钮setOnAction()方法的代码行替换为以下代码:

btn.setOnAction ((e) - >{标签。setText(“Hello, World !”);});

刚才删除的ClickHandler类中有一个handle()方法。该方法只接受一个参数,即ActionEvent对象e。我们刚刚替换原始代码的代码包含一个lambda表达式,将参数e映射到将在事件发生时运行的代码块。这段代码是过去驻留在handle()方法体中的代码。新的语句比原来的语句节省了很多空间。lambda表达式用更简单的替代方法替换ClickHandler类及其handle()方法。