JavaFX Hello World

JavaFX教程 - JavaFX Hello World


以下代码显示了如何在JavaFX中创建一个窗口并添加一个按钮控制到它。 它还显示如何处理按钮的点击事件。

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
//w w  w.j  ava 2s  .  c  o m
public class Main extends Application {

  @Override
  public void start(Stage primaryStage) {
    Button btn = new Button();
    btn.setText("Say "Hello World"");
    btn.setOnAction(new EventHandler<ActionEvent>() {

      @Override
      public void handle(ActionEvent event) {
        System.out.println("Hello World!");
      }
    });

    StackPane root = new StackPane();
    root.getChildren().add(btn);

    Scene scene = new Scene(root, 300, 250);

    primaryStage.setTitle("Hello World!");
    primaryStage.setScene(scene);
    primaryStage.show();
  }

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

上面的代码生成以下结果。

null


注意

JavaFX应用程序的Main类扩展了 javafx.application.Application 类。 start()方法是所有JavaFX应用程序的主要入口点。

javafx.application.Application类提供应用程序生命周期功能,如在运行时初始化,启动,启动和停止。

应用程序类为Java应用程序启动与主线程分离的JavaFX GUI组件提供了一种方法。

main()方法通过传入JavaFX应用程序Application.launch()方法的命令行参数。

访问传递到 launch()方法中的任何参数我们可以调用Application类的getParameters()方法。

执行 Application.launch()方法后,JavaFX应用程序将进入就绪状态,并且框架内部调用start()方法来启动。

调用 start()方法后,该程序在JavaFX线程中运行,而不是在主线程上运行一个JavaFX javafx.stage.Stage 对象是可供开发人员使用。

以下代码显示了覆盖的应用程序start()方法:

@Override
public void  start(Stage primaryStage) {...}


JavaFX场景图

JavaFX应用程序通过阶段和场景来定义用户界面容器。

JavaFX Stage 类是顶层JavaFX容器。JavaFX Scene 类是所有内容的容器。

Stage和Scene与Swing名称相比奇怪命名,例如JFrame,JPanel。

JavaFX API将事物建模为剧院或戏剧。

在剧院演员在观众面前演奏。一场戏由一对多的场景组成。所有场景都在舞台上进行。

在JavaFX中, Stage 等效于类似的应用程序窗口到Java Swing API JFrame JDialog

Scene对象是一个内容窗格,类似于Java Swing的JPanel。每个场景可以保存子节点对象。

JavaFX节点

在JavaFX中,场景内容表示为a节点的分层场景图。

JavaFX节点是所有场景图形节点的基本基类。

节点可以缩放,变换,翻译和具有效果。

最常用的节点是UI控件和Shape对象。

场景图可以通过使用容器来包含子节点类如Group或Pane类。

在上面的代码中,根节点是一个 StackPane 对象,这是一个可调整大小的布局节点。

根节点包含一个子节点,一个 Button

按钮有一个事件处理程序,当按下按钮时打印消息。

一旦子节点已添加到我们的根Group通过 getChildren()。add()方法,我们设置primaryStage的场景并调用show()方法显示JavaFX应用程序窗口。

默认情况下,窗口将允许用户最小化,最大化和退出应用程序。

以下是设置场景并显示JavaFX应用程序窗口(Stage)的代码:

primaryStage.setScene(scene);
primaryStage.show();

JavaFX应用程序不需要main()方法当使用JavaFX Packager工具创建JAR文件时。

JavaFX Packager工具会将JavaFX Launcher嵌入JAR文件中。

例子

以下代码显示如何处理命令行参数。

import java.util.List;
//from   w  w w  .j  a  v  a 2 s  . c o m
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.effect.SepiaTone;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

public class Main extends Application {

    public static void main(String[] args) {
        Application.launch(args);
    }
    
    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("Title");
        
        final Parameters params = getParameters();
        final List<String> parameters = params.getRaw();
        final String imageUrl = !parameters.isEmpty() ? parameters.get(0) : "";
        
        primaryStage.show();
    }
}
0.0448s