JavaFX Hello World

2018-01-09 19:24 更新

JavaFX教程 - JavaFX Hello World


以下代碼顯示了如何在JavaFX中創(chuàng)建一個窗口并添加一個按鈕控制到它。 它還顯示如何處理按鈕的點擊事件。

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);
  }
}

上面的代碼生成以下結(jié)果。

null


注意

JavaFX應(yīng)用程序的Main類擴展了 javafx.application.Application 類。 start()方法是所有JavaFX應(yīng)用程序的主要入口點。

javafx.application.Application類提供應(yīng)用程序生命周期功能,如在運行時初始化,啟動,啟動和停止。

應(yīng)用程序類為Java應(yīng)用程序啟動與主線程分離的JavaFX GUI組件提供了一種方法。

main()方法通過傳入JavaFX應(yīng)用程序Application.launch()方法的命令行參數(shù)。

訪問傳遞到 launch()方法中的任何參數(shù)我們可以調(diào)用Application類的getParameters()方法。

執(zhí)行 Application.launch()方法后,JavaFX應(yīng)用程序?qū)⑦M入就緒狀態(tài),并且框架內(nèi)部調(diào)用start()方法來啟動。

調(diào)用 start()方法后,該程序在JavaFX線程中運行,而不是在主線程上運行一個JavaFX javafx.stage.Stage 對象是可供開發(fā)人員使用。

以下代碼顯示了覆蓋的應(yīng)用程序start()方法:

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


JavaFX場景圖

JavaFX應(yīng)用程序通過階段和場景來定義用戶界面容器。

JavaFX Stage 類是頂層JavaFX容器。JavaFX Scene 類是所有內(nèi)容的容器。

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

JavaFX API將事物建模為劇院或戲劇。

在劇院演員在觀眾面前演奏。一場戲由一對多的場景組成。所有場景都在舞臺上進行。

在JavaFX中, Stage 等效于類似的應(yīng)用程序窗口到Java Swing API JFrame JDialog 。

Scene對象是一個內(nèi)容窗格,類似于Java Swing的JPanel。每個場景可以保存子節(jié)點對象。

JavaFX節(jié)點

在JavaFX中,場景內(nèi)容表示為a節(jié)點的分層場景圖。

JavaFX節(jié)點是所有場景圖形節(jié)點的基本基類。

節(jié)點可以縮放,變換,翻譯和具有效果。

最常用的節(jié)點是UI控件和Shape對象。

場景圖可以通過使用容器來包含子節(jié)點類如Group或Pane類。

在上面的代碼中,根節(jié)點是一個 StackPane 對象,這是一個可調(diào)整大小的布局節(jié)點。

根節(jié)點包含一個子節(jié)點,一個 Button

按鈕有一個事件處理程序,當(dāng)按下按鈕時打印消息。

一旦子節(jié)點已添加到我們的根Group通過 getChildren()。add()方法,我們設(shè)置primaryStage的場景并調(diào)用show()方法顯示JavaFX應(yīng)用程序窗口。

默認(rèn)情況下,窗口將允許用戶最小化,最大化和退出應(yīng)用程序。

以下是設(shè)置場景并顯示JavaFX應(yīng)用程序窗口(Stage)的代碼:

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

JavaFX應(yīng)用程序不需要main()方法當(dāng)使用JavaFX Packager工具創(chuàng)建JAR文件時。

JavaFX Packager工具會將JavaFX Launcher嵌入JAR文件中。

例子

以下代碼顯示如何處理命令行參數(shù)。

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();
    }
}
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號