第一个JavaFX应用程序

时间:2020-01-09 10:36:43  来源:igfitidea点击:

在本教程中,我将向我们展示如何创建第一个JavaFX应用程序。因此,本教程既可以向我们介绍JavaFX的核心概念,也可以为我们提供一些JavaFX代码,我们可以将它们用作自己的实验的模板。

JavaFX应用程序类

JavaFX应用程序需要主要的启动类。此类必须扩展javafx.application.Application类,该类是Java自Java 8起的标准类。

这是Application的示例子类:

package com.Hyman.javafx.helloworld;

import javafx.application.Application;

public class MyFxApp extends Application {

}

实现start()

JavaFXApplication类的所有子类都必须实现Application类的抽象start()方法(或者是Application本身的抽象子类)。

启动JavaFX应用程序时,将调用start()方法。这是上面的例子,但是实现了start()方法:

package com.Hyman.javafx.helloworld;

import javafx.application.Application;
import javafx.stage.Stage;

public class MyFxApp extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {
        primaryStage.setTitle("My First JavaFX App");

        primaryStage.show();
    }

}

start()方法采用Stage类型的单个参数。在此阶段,将显示JavaFX应用程序的所有可视部分。 JavaFX运行时会为我们创建Stage对象。

上面的示例在舞台对象上设置标题,然后在其上调用show()。这将使JavaFX应用程序在窗口中可见,标题在窗口的顶部栏中可见。

如果我们不对舞台对象调用show(),则看不到任何内容。没有打开任何窗口。如果JavaFX应用程序在启动时不可见,请检查我们是否记得从start()内部调用Stage``show()方法。

添加main()方法

实际上,我们可以在没有main()方法的情况下启动JavaFX应用程序。但是,如果要将命令行参数传递给应用程序,则需要添加一个" main()"方法。通常,我更喜欢添加一个" main()"方法,因为它使启动应用程序的代码更加明确。

这是上面添加了main()方法的示例:

package com.Hyman.javafx.helloworld;

import javafx.application.Application;
import javafx.stage.Stage;

public class MyFxApp extends Application {

    @Override
        public void start(Stage primaryStage) throws Exception {
        primaryStage.setTitle("My First JavaFX App");

        primaryStage.show();
    }
    
    public static void main(String[] args) {
        Application.launch(args);
    }
    

}

如我们所见,main()方法使用命令行参数调用静态的launch()方法。 Launch()方法是位于Application类中的静态方法。此方法将启动JavaFX运行时和JavaFX应用程序。

Launch()方法将检测从哪个类调用它,因此我们不必明确告诉它要启动哪个类。

这实际上就是创建JavaFX应用程序所需要的全部。这很简单,不是吗?现在我们可以开始使用JavaFX了!

这是运行上述JavaFX应用程序后打开的窗口的屏幕截图:

添加场景

前面的JavaFX示例仅打开一个窗口,但此窗口内未显示任何内容。要在JavaFX应用程序窗口中显示内容,必须在Stage对象中添加Scene。这是在start()方法内部完成的。

JavaFX应用程序内要显示的所有组件都必须位于场景内。 "舞台"和"场景"的名称是受剧院启发的。一个舞台可以显示多个场景,就像在戏剧中一样。类似地,计算机游戏可以具有菜单场景,游戏场景,游戏场景,高分场景等。

这是一个如何将"场景"对象与一个简单的"标签"一起添加到"舞台"的示例:

package com.Hyman.javafx.helloworld;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.stage.Stage;

public class MyFxApp extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {
        primaryStage.setTitle("My First JavaFX App");
        
        Label label = new Label("Hello World, JavaFX !");
        Scene scene = new Scene(label, 400, 200);
        primaryStage.setScene(scene);
        
        primaryStage.show();
    }

    public static void main(String[] args) {
        Application.launch(args);
    }
}

此示例已添加三行。首先创建一个"标签"对象。然后创建一个"场景"对象,将"标签"作为参数以及代表场景宽度和高度的两个参数传递。

场景构造器的第一个参数是场景图的根元素。场景图是一个类似于对象结构的图,其中包含要在JavaFX应用程序中显示的所有可视组件(例如GUI组件)。

width和height参数设置JavaFX窗口打开时的宽度和高度,但是用户可以调整窗口的大小。