JavaFX程序的基本结构
JavaFX作为Java新一代的GUI编程框架,受到Java程序员的广泛欢迎。比起上一代的Swing技术,JavaFX功能更强大,编程更简单,构造界面的控件种类更丰富,并且有功能强大的界面设计工具的支持。
下面就来简单地介绍一下JavaFX程序的基本结构,并通过一个具体的例子来做说明。
首先,介绍一下JavaFX程序的基本构成。JavaFX程序作为一种特殊类型的应用程序,它的构成也是特殊的。JavaFX为了方便程序员编写JavaFX程序,特别定义好了一个特殊的类Application,即javafx.application.Application,JavaFX程序中的主类必须从这个类派生出来,并且必须覆盖start方法,这个方法是JavaFX程序的启动方法,由Java虚拟机自动调用。代码如下:
public class MyJavaFX extends Application {
@Override // Override the start method in the Application class
public void start(Stage primaryStage) {
// code here
}
}
start方法的主要作用就是完成程序界面的具体构造,它接受的参数primaryStage是由Java虚拟机自动创建的一个特殊对象,称为主舞台,相当于程序的主窗口。我们需要在这个主舞台上完成界面的构造。首先需要创建一个场景Scene对象,然后将场景对象添加到主舞台上,然后再在场景上摆放各种节点Node来构造界面。它们的关系如下图所示:
图中的按钮Button就是控件,控件也是节点的一种,具体的界面主要就是由各种控件来构成,不同的控件有着不同的外观和功能。
为了更好地构造不同的界面,可以借助各种面板来进行布局。JavaFX提供了多种面板供我们使用,方便我们进行不同风格的布局。
下面的例子中使用了HBox 面板,HBox的布局策略是将所有节点摆放在同一排。首先创建了两个Button,代码如下:
Button btOK = new Button("OK");
btOK.setPrefSize(100, 20);//将Button的宽度和高度设置为100和20
Button btCancel = new Button("Cancel");
btCancel.setPrefSize(100, 20); //将Button的宽度和高度设置为100和20
然后创建HBox对象,代码如下:
HBox hbox = new HBox(); //设置控件与 HBox 边缘之间的距离
hbox.setPadding(new Insets(15, 12, 15, 12));
hbox.setSpacing(10); // 设置节点之间的间隔距离
hbox.setStyle("-fx-background-color: #336699;");//设置背景色
然后将两个Button添加到HBox中,代码如下:
hbox.getChildren().addAll(btOK, btCancel);
然后创建场景Scene对象,将场景对象添加到主舞台上,代码如下:
Scene scene = new Scene(hbox, 200, 250);
primaryStage.setScene(scene);
最后,显示主舞台,代码如下:
primaryStage.show();
完整的代码如下:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.stage.Stage;
import javafx.scene.layout.HBox;
import javafx.geometry.Insets;
public class MyJavaFX extends Application {
@Override // Override the start method in the Application class
public void start(Stage primaryStage) {
HBox hbox = new HBox();
hbox.setPadding(new Insets(15, 12, 15, 12));
hbox.setSpacing(10);
hbox.setStyle("-fx-background-color: #336699;");
Button btOK = new Button("OK");
btOK.setPrefSize(100, 20);
Button btCancel = new Button("Cancel");
btCancel.setPrefSize(100, 20);
hbox.getChildren().addAll(btOK, btCancel);
Scene scene = new Scene(hbox, 200, 250);
primaryStage.setTitle("MyJavaFX");
primaryStage.setScene(scene);
primaryStage.show();
}
/**
* The main method is only needed for the IDE with limited
* JavaFX support. Not needed for running from the command line.
*/
public static void main(String[] args) {
launch(args);
}
}
注意,如果要编译和运行JavaFX程序,必须安装JDK 8以上的版本。
转载于:https://www.cnblogs.com/javatomcat/p/8059226.html
相关资源:数据结构—成绩单生成器