雅虎猫

博客园 首页 联系 订阅 管理

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以上的版本。

posted on 2017-12-18 19:32  雅虎猫  阅读(2458)  评论(0编辑  收藏  举报