JavaFX桌面開發入門,這一篇文章就夠了

最近準備用Java開發桌面軟件,以前都是直接用awt,swing,現在準備入手一下JavaFX來開發桌面軟件.


下載JavaFX(使用JDK7,8...可無視此步驟)

JavaFX在JDK7以及之後的版本集成(JDK自帶了)

但是在Java11被抽離了出來,所以我們使用Java11和後面的版本的JDK都需要自行下載JavaFX.

如果嫌麻煩 可以通過我上傳的資源進行下載: https://download.csdn.net/download/qq_41806966/12462366

進入官網: https://openjfx.io/

界面如下,往下滑

下面兩個按鈕分別對應下載,和下載源碼(OpenJDK)

我們點擊Download選擇對應版本就可以下載了

 下載完後解壓 內容如下

在lib文件夾下就是我們使用的jar包了

在Eclipse中配置庫

每次都要導入jar包顯得格外麻煩,所以我們可以在Eclipse中將這些jar包添加成一個庫

注: 本質上是擁有其餘jar的引用,所以在別的電腦上進行開發也需要重新配置一下,否則提示庫丟失等.

我們選擇新建的 java 項目,右鍵 Properties(快捷鍵ALT+Enther),選擇Java Build Path

選擇User Library

我們需要新建一個庫,選擇UserLibrary

將文件夾lib內的jar全添加進庫,使用Ctrl加選.

添加完後點擊Apply and Close 然後將剛剛新建的庫添加進項目,選擇,點擊finish

配置完成,我們接下來就可以在項目中使用javafx了

JavaFX代碼

Hello World

現在,我們來實現一個簡單的hello,world

首先,新建一個類,繼承自Application(注意,是javafx的Application)

並且在這個類裏面創建main方法,調用launch(args) 運行,傳遞的是main方法的參數

我們需要實現 start() 方法,start方法有一個參數,Stage類(javafx的頂級容器),可以讓我們設置窗體大小,設置標題,設置場景等.

hello,world的代碼如下,就幾行,直接貼圖

注意: 在Java9以上的則需要引入(requires)對應模塊,並且導出此類所在模塊(因爲javafx要使用我們編寫的這個類,所以需要導出 exports,並且在別的包中可能需要使用此包,所以要使用依賴導入 requires transitive)

運行結果如下

如果學過swing的就知道,我們關閉窗體並不會真的關閉(程序還在後臺運行),但是在javafx中關閉後就自動給你關閉了.

點擊按鈕顯示界面

我們需要用到按鈕(Button),並且點擊按鈕纔會顯示之前的界面 hello, world

實現思路很簡單,我們沒有設置佈局,所以後面添加進窗體的會覆蓋前面的.

也就是我們點擊按鈕其實是將按鈕從容器中刪除(刪除後就不覆蓋之前的標籤了)

代碼如下

@Override
	public void start(Stage primaryStage) throws Exception {
		//設置標題
		primaryStage.setTitle("shendi test javafx");
		//創建標籤 使用的都是 javafx 下的類
		Label helloLabel = new Label("hello, world");
		//創建按鈕
		Button helloButton = new Button("點我彈出顯示歡迎");
		//創建面板 構造方法有兩個重載,一個爲無參數,一個爲可變參數 傳遞要添加的子節點
		StackPane pane = new StackPane(helloLabel);
		//獲取面板的子類集合(繼承自List)直接添加組件
		pane.getChildren().add(helloButton);
		//創建場景 後面兩個參數爲寬高,也可以不設置(運行起來會怪怪的)
		Scene scene = new Scene(pane,200,100);
		//設置場景
		primaryStage.setScene(scene);
		
		/* 給按鈕添加活動事件 這裏傳遞的是一個EventHandler
		 * 可以自己繼承此類實現 然後這裏傳遞this,也可以使用外部類繼承 這裏使用那個類的對象.也可以使用匿名類
		 * 這裏使用的匿名類
		 */
		helloButton.setOnAction(new EventHandler<ActionEvent>() {
			@Override
			public void handle(ActionEvent event) {
				//當按鈕被點擊就會執行這裏
				//我們需要顯示歡迎,歡迎本來是有的,不過被遮住了,所以我們移除掉按鈕就可以了.
				pane.getChildren().remove(helloButton);
			}
		});
		
		//顯示窗體
		primaryStage.show();
	}

運行結果

更多的其實就是API的使用了,可以參考官方的文檔.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章