# Java FX 於 Apache NetBeans IDE 執行辦法 ## 版本確認(比照B217) Apache NetBeans IDE 22 (上方 Help -> about) ![image](https://hackmd.io/_uploads/r1tIWVKeke.png) [NetBeans 版本為 22](https://netbeans.apache.org/front/main/download/nb22/) [JDK 為 22.0.1](https://www.oracle.com/java/technologies/javase/jdk22-archive-downloads.html) ## 1. 創建專案 ```txt File -> New Project -> Java with Maven -> SimpleJavaFX Maven Archetype -> Next ``` ![image](https://hackmd.io/_uploads/SyOqq7Fg1l.png) ```txt 改名後-> Finish ``` ![image](https://hackmd.io/_uploads/r1j6cQYeJg.png) 創建完之後會有四個檔案 1. Source Packages 2. Dependencies 3. Java Dependencies 4. Project Files #### 其中我們的java範例檔案會放在`Source Packages`裡面 #### 在`Source Packages`裡面可以發現會有 `com.mycompany.你的專案名子` (如果你在創建專案的地方有改名或是Group id的話可能會和我的不一樣) #### 在`com.mycompany.你的專案名子`中會有兩個範例的java檔案 1. App.java 2. Systeminfo.java ![image](https://hackmd.io/_uploads/rkrFomtlyg.png) #### 我們需要執行App.java檔案才可以執行Systeminfo.java ## 2. 示範課本程式碼 ### 以下用一個課本的程式碼來做執行 P.564 (LISTING 14.1 MyJavaFX.java) ```java import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.stage.Stage; public class MyJavaFX extends Application { @Override // Override the start method in the Application class public void start(Stage primaryStage) { // Create a button and place it in the scene Button btOK = new Button("OK"); Scene scene = new Scene(btOK, 200, 250); primaryStage.setTitle("MyJavaFX"); // Set the stage title primaryStage.setScene(scene); // Place the scene in the stage primaryStage.show(); // Display the stage } /** * The main method is only needed for the IDE with limited * JavaFX support. Not needed for running from the command line. */ public static void main(String[] args) { launch(args); } } ``` #### 於<default package>裡新增java並將上述的程式碼貼上, 檔案名:MyJavaFX.java #### 此時如果你直接run MyJavaFX.java的話會發現沒辦法執行 ### 這是因為我們需要創建一個單獨的 `Main` 類來運行我的 `Main` 類 #### 所以我們只需要新增這段java檔案即可,我將檔案命名為run ```java import javafx.application.Application; public class run { public static void main(String[] args) { MyJavaFX.main(args); } } ``` ![image](https://hackmd.io/_uploads/BycBxEYeyx.png) #### 此時去執行run.java就可以發現MyJavaFX.java已經被執行了 ![image](https://hackmd.io/_uploads/SkGqlEFe1x.png) --- ## 替代方案 vscode (考試時需用B217的NetBeans) 請先去下載javaFX Support ![截圖 2024-11-14 上午11.08.59](https://hackmd.io/_uploads/HktCt1mGJx.png) 創建專案,並搜尋javaFX 可先使用預設的即可,後續有需要再自行更改 ![截圖 2024-11-14 上午11.12.33](https://hackmd.io/_uploads/SJ3scy7f1e.png) 此時的終端機跑一下之後會出現這個,請按enter ![截圖 2024-11-14 上午11.15.10](https://hackmd.io/_uploads/S1jSiy7Gkx.png) 請輸入N然後按enter ![截圖 2024-11-14 上午11.15.24](https://hackmd.io/_uploads/S1DLoJQf1x.png) 前面的部分可以直接enter跳過 我們需要修改的是 接著按Y javafx-maven-plugin-version: **0.0.8** javafx-version: **21.0.9** ![image](https://hackmd.io/_uploads/S1ztC_h1bx.png) 稍等一下後就可以看到demo的程式碼了 ![截圖 2024-11-14 上午11.15.44](https://hackmd.io/_uploads/H1jDo1XMkg.png) 此時我們直接在這裡創建上面的範例MyJavaFX.java 按照圖片的方法創建選擇class並輸入檔名MyJavaFX ![截圖 2024-11-14 上午11.16.14](https://hackmd.io/_uploads/S1aFokXGJg.png) 然後執行MyJavaFX(點擊右上角即可執行) 結果會如下,可以發現英文會跑掉,但如果用中文就不會 ![截圖 2024-11-14 上午11.17.25](https://hackmd.io/_uploads/H1-0okQzyx.png) 這時只需要在程式碼新增一行,直接在按鈕上設置明確的字體即可 然後再重新執行 ```java btOK.setFont(Font.font("Arial")); ``` ![截圖 2024-11-14 上午11.18.08](https://hackmd.io/_uploads/B1CxhJQfye.png) ![截圖 2024-11-14 上午11.18.24](https://hackmd.io/_uploads/HkiZ2JmfJg.png)