JavaFX - 應(yīng)用

原文地址:https://www.tutorialspoint.com/javafx/javafx_application.htm
譯者:Eirture


在這章中,我們將詳細(xì)討論 JavaFX 應(yīng)用的結(jié)構(gòu),當(dāng)然也會(huì)學(xué)習(xí)如何創(chuàng)建一個(gè) JavaFX 應(yīng)用程序酬姆。

JavaFX 應(yīng)用結(jié)構(gòu)

通常,一個(gè) JavaFX 應(yīng)用包含三個(gè)主要的控件:Stage、Scene 和 Nodes圆仔。如下圖所示:


Stage(舞臺(tái))

一個(gè) Stage(一個(gè)窗口)包含 JavaFX 應(yīng)用中所有的對(duì)象育灸。它由 javafx.stage 包的 Stage 類表示癌蓖。主 Stage 由系統(tǒng)創(chuàng)建责循。系統(tǒng)創(chuàng)建了 Stage 對(duì)象后,將其作為參數(shù)傳入 Application 類中 start() 方法。
Stage 由 WidthHeight 這兩個(gè)參數(shù)決定它的位置魔策。Stage 分為內(nèi)容區(qū)域和裝飾(標(biāo)題欄和邊框)。
Stage 有五種可用的形式:

  • Decorated
  • Undecorated
  • Transparent
  • Unified
  • Utility

必須調(diào)用 show() 方法才能展示 stage 的內(nèi)容河胎。

Scene(場(chǎng)景)

scene 表示 JavaFX 應(yīng)用的物理內(nèi)容闯袒。它包含 scene 圖像所有的內(nèi)容。scene 對(duì)象由 javafx.scene 包中的 Scene 類表示游岳。在一個(gè)實(shí)例中政敢,場(chǎng)景對(duì)象只能添加到一個(gè) stage 中。
可以通過 Scene 類來(lái)實(shí)例化場(chǎng)景吭历。將尺寸(寬和高)和根節(jié)點(diǎn)傳入 stage 的構(gòu)造方法可以控制它的大小堕仔。

Scene Graph(場(chǎng)景圖)和 Nodes(節(jié)點(diǎn))

場(chǎng)景圖是一種用來(lái)組織場(chǎng)景的樹狀數(shù)據(jù)結(jié)構(gòu)。相反晌区,node 是
場(chǎng)景圖的視覺/圖形對(duì)象摩骨。
node 可能包含:

  • 幾何(圖形)對(duì)象(2D 和 3D),如:圓形朗若、矩形恼五、多邊形等。
  • UI 控件哭懈,如:Button灾馒,Checkbox,Choice Box遣总,Text Area 等睬罗。
  • 容器(布局面板),如:Border Pane旭斥,Grid Pane容达,F(xiàn)low Pane 等。
  • 多媒體元素垂券,如:Audio花盐,Video 和 Image 對(duì)象。

在 JavaFX 中 javafx.scene 包中的 Node 類表示一個(gè)節(jié)點(diǎn)菇爪。這個(gè)類是所有節(jié)點(diǎn)類的超類算芯。
如前所述,節(jié)點(diǎn)有三種類型:

  • 根節(jié)點(diǎn):第一個(gè)場(chǎng)景圖被稱為根節(jié)點(diǎn)凳宙。
  • 分支節(jié)點(diǎn)/父節(jié)點(diǎn):有子節(jié)點(diǎn)的節(jié)點(diǎn)被稱為分支節(jié)點(diǎn)/父節(jié)點(diǎn)熙揍。 javafx.scene 包中的 Parent 抽象類是所有父節(jié)點(diǎn)的超類。父節(jié)點(diǎn)有下面這些類型:
    • Group:組節(jié)點(diǎn)是包含子節(jié)點(diǎn)列表的集合節(jié)點(diǎn)近速。每當(dāng)渲染組節(jié)點(diǎn)時(shí)诈嘿,它的所有子節(jié)點(diǎn)都按順序渲染堪旧。應(yīng)用于組節(jié)點(diǎn)的任何轉(zhuǎn)換效果,都將應(yīng)用于所有的子節(jié)點(diǎn)奖亚。
    • Region:它是所有 JavaFX 基于 UI 控件節(jié)點(diǎn)的基類淳梦。如圖表,面板和控件昔字。
    • WebView:這個(gè)節(jié)點(diǎn)管理 Web 引擎并顯示其內(nèi)容爆袍。
  • 葉子節(jié)點(diǎn):沒有子節(jié)點(diǎn)的節(jié)點(diǎn)稱為葉子節(jié)點(diǎn)。例如:Rectangle作郭,Ellipse陨囊,Box,ImageView夹攒,MediaView 都是葉子節(jié)點(diǎn)蜘醋。

必須將根節(jié)點(diǎn)傳遞給場(chǎng)景圖。如果將 Group 作為根節(jié)點(diǎn)咏尝,所有的節(jié)點(diǎn)將被附屬到場(chǎng)景压语,并且場(chǎng)景大小的任何改變都不會(huì)影響到場(chǎng)景的布局。

創(chuàng)建 JavaFX 應(yīng)用

創(chuàng)建一個(gè) JavaFX 應(yīng)用编检,需要實(shí)例化 Application 類并且實(shí)現(xiàn)它的抽象方法 start()胎食,我們?cè)谶@個(gè)方法中編寫 JavaFX 應(yīng)用的代碼。

應(yīng)用類

javafx.application 包中的 Application 類是 JavaFX 應(yīng)用的入口允懂。創(chuàng)建 JavaFX 應(yīng)用厕怜,需要繼承這個(gè)類,并且實(shí)現(xiàn)它的抽象方法 start()蕾总。你需要在這個(gè)方法中編寫 JavaFX 圖形的全部代碼粥航。
main 方法中,你必須調(diào)用 launch() 方法來(lái)啟動(dòng)應(yīng)用生百。這個(gè)方法內(nèi)部調(diào)用應(yīng)用類的 start() 方法躁锡,如下面的程序。

public class JavafxSample extends Application {  
   @Override     
   public void start(Stage primaryStage) throws Exception {
      /*
      Code for JavaFX application.
      (Stage, scene, scene graph)
      */       
   }         
   public static void main(String args[]){           
      launch(args);      
   }
}

創(chuàng)建一個(gè)經(jīng)典的 JavaFX 應(yīng)用置侍,在 start() 方法中,你需要遵循下面給出的步驟:

  • 準(zhǔn)備具有所需節(jié)點(diǎn)的場(chǎng)景圖拦焚。
  • 準(zhǔn)備所需大小的場(chǎng)景蜡坊,并將場(chǎng)景圖(場(chǎng)景圖的根節(jié)點(diǎn))添加進(jìn)去。
  • 準(zhǔn)備 stage赎败,將場(chǎng)景添加進(jìn)去并展示 stage 的內(nèi)容秕衙。

準(zhǔn)備場(chǎng)景圖

你需要根據(jù)你的應(yīng)用準(zhǔn)備一個(gè)包含所需節(jié)點(diǎn)的場(chǎng)景圖。場(chǎng)景的第一個(gè)節(jié)點(diǎn)是根節(jié)點(diǎn)僵刮,它需要我們創(chuàng)建据忘○信#可以選擇 GroupRegion 或者 WebView 作為根節(jié)點(diǎn)勇吊。
Group:Group 由 javafx.scene 包中的 Group 類表示曼追,可以通過實(shí)例化這個(gè)類來(lái)創(chuàng)建一個(gè)組節(jié)點(diǎn),如下所示:

Group root = new Group();

Group 類的 getChildren() 方法返回一個(gè) ObervableList 對(duì)象汉规,它持有所有的節(jié)點(diǎn)礼殊。我們可以獲取該對(duì)象并向其添加子節(jié)點(diǎn),如下所示:

//獲取可觀察列表對(duì)象
ObservableList list = root.getChildren();

//將文本對(duì)象設(shè)置為一個(gè)節(jié)點(diǎn)  
list.add(NodeObject);

我們還可以在 Group 類初始化的時(shí)候针史,將節(jié)點(diǎn)對(duì)象傳入它的構(gòu)造方法就可以添加到其中晶伦,如下所示:

Group root = new Group(NodeObject);

Region: 它是所有 JavaFX UI 控制節(jié)點(diǎn)的基類,如:

  • Chart: 這個(gè)類是所有圖表的基類啄枕,它在 javafx.scene.chart 包下婚陪。
    它有兩個(gè)子類:PieChartXYChart。這兩個(gè)類又有子類频祝,如 AreaChart泌参,BarChartBubbleChart 等智润。在 JavaFX 中用于繪制不同類型的平面圖及舍。
    你可以使用這些類在你的應(yīng)用中嵌入圖表。
  • Pane: 面板是所有布局面板的基類窟绷,例如 AnchorPane锯玛,BorderPane,DialogPane 等兼蜈。Pane 類在 javafx.scene.layout 包中攘残。
  • Control:它是所有用戶界面控制器的基類,例如 Accordion为狸,ButtonBar歼郭,ChoiceBox,ComboBoxBase辐棒,HTMLEditor 等病曾。它在 javafx.scene.control 包中。
    你可以用這些類在你的應(yīng)用中插入各種 UI 元素漾根。

在組中泰涂,你可以對(duì)上面提到的類進(jìn)行實(shí)例化,并將其作為根節(jié)點(diǎn)辐怕,如下面的程序所示逼蒙。

//Creating a Stack Pane
StackPane pane = new StackPane();       

//Adding text area to the pane  
ObservableList list = pane.getChildren();
list.add(NodeObject);

WebView:這個(gè)節(jié)點(diǎn)管理 web 引擎,并展示它的內(nèi)容寄疏。下圖表示 JavaFX 節(jié)點(diǎn)類的層級(jí)是牢。

enter image description here

準(zhǔn)備場(chǎng)景

JavaFX 中的場(chǎng)景通過 javafx.scene 包中的 Scene 類表示僵井。可以通過實(shí)例化這個(gè)類創(chuàng)建一個(gè)場(chǎng)景驳棱,如下面代碼塊所示批什。
實(shí)例化的時(shí)候,必須將根對(duì)象傳給場(chǎng)景類的構(gòu)造方法蹈胡。

Scene scene = new Scene(root);

也可以傳兩個(gè) double 類型的參數(shù)表示場(chǎng)景的寬高渊季,如下所示。

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

準(zhǔn)備 Stage

Stage 是所有 JavaFX 應(yīng)用的容器罚渐,它為應(yīng)用提供一個(gè)窗口却汉。它由 java.stage 包中的 Stage 類表示。Application 類中 start() 方法在參數(shù)中傳遞了這個(gè)類的一個(gè)對(duì)象荷并。
使用這個(gè)對(duì)象合砂,你可以在 stage 上執(zhí)行許多操作。主要如下:

  • 使用 setTitle() 方法設(shè)置 stage 標(biāo)題源织。
  • 使用 setScene() 方法為 stage 附加場(chǎng)景對(duì)象翩伪。
  • 使用 show() 方法展示場(chǎng)景的內(nèi)容,如下所示谈息。
//Setting the title to Stage.
primaryStage.setTitle("Sample application");

//Setting the scene to Stage
primaryStage.setScene(scene);

//Displaying the stage
primaryStage.show();

JavaFX 應(yīng)用的生命周期

JavaFX 應(yīng)用類有三個(gè)生命周期方法缘屹,分別是:

  • start():編寫 JavaFX 圖形代碼的入口方法。
  • stop():一個(gè)可以被覆蓋的空方法侠仇,可以在這里寫停止應(yīng)用的邏輯轻姿。
  • init():一個(gè)可以被覆蓋的空方法,但是不能在這個(gè)方法中創(chuàng)建 stage 或場(chǎng)景逻炊。
    除此之外互亮,它提供一個(gè) launch() 的靜態(tài)方法來(lái)啟動(dòng) JavaFX 應(yīng)用。
    由于 launch() 是靜態(tài)方法余素,你需要在靜態(tài)上下文中調(diào)用它(一般在 main 方法)豹休。每當(dāng) JavaFX 應(yīng)用啟動(dòng)時(shí),將執(zhí)行以下操作(按順序)桨吊。
  • 創(chuàng)建一個(gè)應(yīng)用類的實(shí)例威根。
  • 調(diào)用 init() 方法。
  • 調(diào)用 start() 方法视乐。
  • 啟動(dòng)器等待應(yīng)用程序結(jié)束并調(diào)用 stop() 方法医窿。

終止 JavaFX 應(yīng)用

當(dāng)程序最后一個(gè)窗口被關(guān)閉,應(yīng)用隱式關(guān)閉炊林。可以通過給靜態(tài)方法 setImplicitExit() 方法傳入 Boolean 值 "False" 關(guān)閉這個(gè)行為(應(yīng)該從靜態(tài)上下文中調(diào)用)卷要。
可以通過 Platform.exit()System.exit(int) 方法隱式終止 JavaFX 應(yīng)用渣聚。

案例 1:創(chuàng)建一個(gè)空窗口

本章節(jié)教你如何創(chuàng)建一個(gè)顯示空窗口的 JavaFX 樣例應(yīng)用独榴。步驟如下:

第一步:創(chuàng)建一個(gè)類

創(chuàng)建一個(gè) Java 類,繼承 javafx.application 包中的 Application 類并實(shí)現(xiàn)它的 start() 方法奕枝,如下:

public class JavafxSample extends Application {  
   @Override     
   public void start(Stage primaryStage) throws Exception {      
   }    
}

第二步:創(chuàng)建一個(gè)組對(duì)象

start() 方法中棺榔,實(shí)例化一個(gè) javafx.scene 包中的 Group 類的對(duì)象,如下隘道。

Group root = new Group();

第三步:創(chuàng)建一個(gè)場(chǎng)景對(duì)象

通過實(shí)例化 javafx.scene 包中的 Scene 類創(chuàng)建一個(gè)場(chǎng)景症歇。為它傳入前一步創(chuàng)建的組對(duì)象 (root)。
除了根對(duì)象谭梗,也可以在它的后面忘晤,傳入兩個(gè) double 參數(shù)來(lái)設(shè)置場(chǎng)景的寬高。如下:

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

第四步:設(shè)置 Stage 的標(biāo)題

可以通過 Stage 類的 setTitle() 方法設(shè)置 stage 的標(biāo)題激捏。primaryStage 是作為參數(shù)傳遞給應(yīng)用類 start 方法的 Stage 對(duì)象设塔。
使用 primaryStage 對(duì)象設(shè)置場(chǎng)景的標(biāo)題為 "Sample Application",如下所示远舅。

primaryStage.setTitle("Sample Application");

第五步:將場(chǎng)景添加到 Stage 中

可以通過 Stage 類的 setScene() 方法將場(chǎng)景對(duì)象添加到 stage 中闰蛔。使用如下所示的方法,添加前面準(zhǔn)備的場(chǎng)景對(duì)象图柏。

primaryStage.setScene(scene);

第六步:展示 Stage 內(nèi)容

像下面這樣使用 Stage 類的 show() 方法顯示場(chǎng)景的內(nèi)容序六。

primaryStage.show();

第七步:?jiǎn)?dòng)應(yīng)用

如下所示,在 main() 方法中調(diào)用 Application 類的靜態(tài)方法 launch() 啟動(dòng) JavaFX 應(yīng)用蚤吹。

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

完整案例

下面的程序生成一個(gè)空的 JavaFX 窗口例诀。將下面的代碼保存在 JavafxSample.java 文件中。

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.stage.Stage;  

public class JavafxSample extends Application {
   @Override     
   public void start(Stage primaryStage) throws Exception {            
      //creating a Group object
      Group group = new Group();

      //Creating a Scene by passing the group object, height and width   
      Scene scene = new Scene(group ,600, 300);

      //setting color to the scene
      scene.setFill(Color.BROWN);  

      //Setting the title to Stage.
      primaryStage.setTitle("Sample Application");

      //Adding the scene to Stage
      primaryStage.setScene(scene);

      //Displaying the contents of the stage
      primaryStage.show();
   }    
   public static void main(String args[]){          
      launch(args);     
   }         
}

使用下面的命令在命令行編譯執(zhí)行保存的 Java 文件距辆。

javac JavafxSample.java
java JavafxSample

執(zhí)行時(shí)余佃,上述程序生成一個(gè) JavaFX 窗口。


案例 2:繪制直線

在前面的例子中跨算,我們看到如何創(chuàng)建一個(gè)空的 stage”粒現(xiàn)在,在這個(gè)例子中诸蚕,讓我們使用 JavaFX 庫(kù)試著繪制一條直線步势。
步驟如下:

第一步:創(chuàng)建一個(gè)類

創(chuàng)建一個(gè)類,繼承 javafx.application 包中的 Application 類背犯,并且實(shí)現(xiàn)它的 start() 方法坏瘩,如下所示:

public class DrawingLine extends Application {
   @Override     
   public void start(Stage primaryStage) throws Exception {     
   }    
}

第二步:創(chuàng)建一條線

可以通過實(shí)例化 javafx.scene.shape 包中的 Line 類來(lái)創(chuàng)建一條線,像下面這樣實(shí)例化這個(gè)類漠魏。

//Creating a line object
Line line = new Line();

第三步:設(shè)置線條屬性

通過各自的寫訪問器方法倔矾,設(shè)置 startX,startY,endX 和 endY 屬性來(lái)指定在 X-Y 坐標(biāo)繪制的位置哪自。如下所示丰包。

line.setStartX(100.0);
line.setStartY(150.0);
line.setEndX(500.0);
line.setEndY(150.0);

第四步:創(chuàng)建一個(gè)組對(duì)象

在 start() 方法中,通過實(shí)例化 javafx.scene 包中的 Group 類創(chuàng)建一個(gè)組對(duì)象壤巷。
將前面創(chuàng)建的線條(節(jié)點(diǎn))對(duì)象作為參數(shù)傳入 Group 類的構(gòu)造方法中邑彪,以便將其添加到組中,如下:

Group root = new Group(line);

第五步:創(chuàng)建一個(gè)場(chǎng)景對(duì)象

通過實(shí)例化 javafx.scene 包中的的 Scene 類創(chuàng)建一個(gè)場(chǎng)景對(duì)象胧华。給這個(gè)類傳入前面創(chuàng)建的組對(duì)象 (root)寄症。
除了根對(duì)象,也可以在它的后面矩动,傳入兩個(gè) double 參數(shù)來(lái)設(shè)置場(chǎng)景的寬高有巧。如下:

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

第六步:設(shè)置 stage 的標(biāo)題

可以通過 Stage 類的 setTitle() 方法設(shè)置 stage 的標(biāo)題。primaryStage 是作為參數(shù)傳遞給應(yīng)用類 start 方法的 Stage 對(duì)象铅忿。
使用 primaryStage 對(duì)象設(shè)置場(chǎng)景的標(biāo)題為 "Sample Application"剪决,如下所示。

primaryStage.setTitle("Sample Application");

第七步:將場(chǎng)景添加到 Stage 中

可以通過 Stage 類的 setScene() 方法將場(chǎng)景對(duì)象添加到 stage 中檀训。使用如下所示的方法柑潦,添加前面準(zhǔn)備的場(chǎng)景對(duì)象。

primaryStage.setScene(scene);

第八步:展示 Stage 內(nèi)容

像下面這樣使用 Stage 類的 show() 方法顯示場(chǎng)景的內(nèi)容峻凫。

primaryStage.show();

第九步:?jiǎn)?dòng)應(yīng)用

如下所示渗鬼,在 main() 方法中調(diào)用 Application 類的靜態(tài)方法 launch() 啟動(dòng) JavaFX 應(yīng)用。

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

完整案例

下面的程序展示如何使用 JavaFX 生成一條直線荧琼。將下面的代碼保存在 JavafxSample.java 文件中譬胎。

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.shape.Line;
import javafx.stage.Stage;  

public class DrawingLine extends Application{
   @Override
   public void start(Stage stage) {
      //Creating a line object
      Line line = new Line();

      //Setting the properties to a line
      line.setStartX(100.0);
      line.setStartY(150.0);
      line.setEndX(500.0);
      line.setEndY(150.0);

      //Creating a Group
      Group root = new Group(line);

      //Creating a Scene
      Scene scene = new Scene(root, 600, 300);

      //Setting title to the scene
      stage.setTitle("Sample application");

      //Adding the scene to the stage
      stage.setScene(scene);

      //Displaying the contents of a scene
      stage.show();
   }      
   public static void main(String args[]){
      launch(args);
   }
}

使用下面的命令在命令行編譯執(zhí)行保存的 Java 文件。

javac JavafxSample.java
java JavafxSample

執(zhí)行時(shí)命锄,上述程序生成如下所示的 JavaFX 窗口堰乔。


案例 3:顯示文字

我們還可以在 JavaFX 場(chǎng)景中陷入文本。這個(gè)例子展示如何在 JavaFX 中潛入文本脐恩。
步驟如下:

第一步:創(chuàng)建一個(gè)類

創(chuàng)建一個(gè)類镐侯,繼承 javafx.application 包中的 Application 類,并且實(shí)現(xiàn)它的 start() 方法驶冒,如下所示:

public class DrawingLine extends Application {
   @Override     
   public void start(Stage primaryStage) throws Exception {     
   }    
}

第二步:嵌入文本

你可以通過實(shí)例化 javafx.scene.shape 包中的 Text 類在 JavaFX 場(chǎng)景中嵌入文字苟翻。實(shí)例化如下。
將需要嵌入的文本字符串傳入它的構(gòu)造方法中骗污,如下崇猫。

//Creating a Text object
Text text = new Text("Welcome to Tutorialspoint");

第三步:設(shè)置字體

可以使用 Text 類的 setFont() 方法設(shè)置文本字體。這個(gè)方法接收一個(gè)字體對(duì)象的參數(shù)需忿。像下面為文本設(shè)置 45 號(hào)字體诅炉。

//Setting font to the text
text.setFont(new Font(45));

第四步:設(shè)置文本位置

通過各自的寫訪問器 setX()setY() 方法蜡歹,設(shè)置 X,Y 坐標(biāo)來(lái)指定文本在 X-Y 坐標(biāo)中的位置涕烧,如下季稳。

//setting the position of the text
text.setX(50);
text.setY(150);

第五步:創(chuàng)建一個(gè)組對(duì)象

在 start() 方法中,通過實(shí)例化 javafx.scene 包中的 Group 類創(chuàng)建一個(gè)組對(duì)象澈魄。
將前面創(chuàng)建的文本(節(jié)點(diǎn))對(duì)象作為參數(shù)傳入 Group 類的構(gòu)造方法中,以便將其添加到組中仲翎,如下:

Group root = new Group(text);

第六步:創(chuàng)建一個(gè)場(chǎng)景對(duì)象

通過實(shí)例化 javafx.scene 包中的的 Scene 類創(chuàng)建一個(gè)場(chǎng)景對(duì)象痹扇。給這個(gè)類傳入前面創(chuàng)建的組對(duì)象 (root)。
除了根對(duì)象溯香,也可以在它的后面鲫构,傳入兩個(gè) double 參數(shù)來(lái)設(shè)置場(chǎng)景的寬高。如下:

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

第七步:設(shè)置 stage 的標(biāo)題

可以通過 Stage 類的 setTitle() 方法設(shè)置 stage 的標(biāo)題玫坛。primaryStage 是作為參數(shù)傳遞給應(yīng)用類 start 方法的 Stage 對(duì)象结笨。
使用 primaryStage 對(duì)象設(shè)置場(chǎng)景的標(biāo)題為 "Sample Application",如下所示湿镀。

primaryStage.setTitle("Sample Application");

第八步:將場(chǎng)景添加到 Stage 中

可以通過 Stage 類的 setScene() 方法將場(chǎng)景對(duì)象添加到 stage 中炕吸。使用如下所示的方法,添加前面準(zhǔn)備的場(chǎng)景對(duì)象勉痴。

primaryStage.setScene(scene);

第九步:展示 Stage 內(nèi)容

像下面這樣使用 Stage 類的 show() 方法顯示場(chǎng)景的內(nèi)容赫模。

primaryStage.show();

第十步:?jiǎn)?dòng)應(yīng)用

如下所示,在 main() 方法中調(diào)用 Application 類的靜態(tài)方法 launch() 啟動(dòng) JavaFX 應(yīng)用蒸矛。

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

完整案例

下面的程序使用 JavaFX 顯示文本瀑罗。將下面的代碼保存在 JavafxSample.java 文件中。

import javafx.application.Application;
import javafx.collections.ObservableList;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.text.Font;
import javafx.scene.text.Text;

public class DisplayingText extends Application {
   @Override
   public void start(Stage stage) {       
      //Creating a Text object
      Text text = new Text();

      //Setting font to the text
      text.setFont(new Font(45));

      //setting the position of the text
      text.setX(50);
      text.setY(150);          

      //Setting the text to be added.
      text.setText("Welcome to Tutorialspoint");

      //Creating a Group object  
      Group root = new Group();

      //Retrieving the observable list object
      ObservableList list = root.getChildren();

      //Setting the text object as a node to the group object
      list.add(text);       

      //Creating a scene object
      Scene scene = new Scene(root, 600, 300);

      //Setting title to the Stage
      stage.setTitle("Sample Application");

      //Adding scene to the stage
      stage.setScene(scene);

      //Displaying the contents of the stage
      stage.show();
   }   
   public static void main(String args[]){
      launch(args);
   }
}

使用下面的命令在命令行編譯執(zhí)行保存的 Java 文件雏掠。

javac JavafxSample.java
java JavafxSample

執(zhí)行時(shí)斩祭,上述程序生成展示文本的 JavaFX 窗口,如下所示乡话。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末摧玫,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蚊伞,更是在濱河造成了極大的恐慌席赂,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件时迫,死亡現(xiàn)場(chǎng)離奇詭異颅停,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)掠拳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門癞揉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說我怎么就攤上這事喊熟“胤荆” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵芥牌,是天一觀的道長(zhǎng)烦味。 經(jīng)常有香客問我,道長(zhǎng)壁拉,這世上最難降的妖魔是什么谬俄? 我笑而不...
    開封第一講書人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮弃理,結(jié)果婚禮上溃论,老公的妹妹穿的比我還像新娘。我一直安慰自己痘昌,他們只是感情好钥勋,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著辆苔,像睡著了一般算灸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上姑子,一...
    開封第一講書人閱讀 51,370評(píng)論 1 302
  • 那天乎婿,我揣著相機(jī)與錄音,去河邊找鬼街佑。 笑死谢翎,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的沐旨。 我是一名探鬼主播森逮,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼磁携!你這毒婦竟也來(lái)了褒侧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤谊迄,失蹤者是張志新(化名)和其女友劉穎闷供,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體统诺,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡歪脏,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了粮呢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片婿失。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡钞艇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出豪硅,到底是詐尸還是另有隱情哩照,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布懒浮,位于F島的核電站飘弧,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏砚著。R本人自食惡果不足惜眯牧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望赖草。 院中可真熱鬧,春花似錦剪个、人聲如沸秧骑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)乎折。三九已至,卻和暖如春侵歇,著一層夾襖步出監(jiān)牢的瞬間骂澄,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工惕虑, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留坟冲,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓溃蔫,卻偏偏與公主長(zhǎng)得像健提,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子伟叛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理私痹,服務(wù)發(fā)現(xiàn),斷路器统刮,智...
    卡卡羅2017閱讀 134,656評(píng)論 18 139
  • 前言 由于工作原因紊遵,接觸一些 JavaFX 開發(fā)。最近產(chǎn)品的同學(xué)提到一個(gè)遺留已久的問題——在網(wǎng)站啟動(dòng)我們的 Jav...
    Eirture閱讀 2,909評(píng)論 1 14
  • 最近網(wǎng)貸P2P在山東不怎么太平,隨著一片片的雷聲滾滾和即將到來(lái)的新年辉哥,網(wǎng)貸注定又處在風(fēng)口浪尖桦山。雖然踩雷是每個(gè)人都不...
    吉盟財(cái)富公司閱讀 464評(píng)論 0 0
  • 中亞,這個(gè)位置獨(dú)特的地理區(qū)域,在歷史舞臺(tái)上始終是處于東方文明與西方文明輻射的邊緣地帶攒射。正是這種邊緣地帶的特性使得中...
    蒹葭為霜閱讀 284評(píng)論 0 0
  • 2016.6.12周日,天氣有點(diǎn)熱哦恒水。不過会放,雖然周日上班,但想到是個(gè)我們的紀(jì)念日钉凌,心情真是久久不能平靜咧最。祝福一起走...
    元?dú)鉂M滿的慧慧醬閱讀 269評(píng)論 0 0