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類擴(kuò)展了 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(jìn)入就緒狀態(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將事物建模為劇院或戲劇。

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

在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

公眾號
微信公眾號

編程獅公眾號