【JavaFX學(xué)習(xí)】開發(fā)環(huán)境配置

一、JDK15.0.1安裝與配置

https://blog.csdn.net/weixin_28724003/article/details/114157778

二狸相、JavaFX 11 安裝與配置

下載地址:https://gluonhq.com/products/javafx/
配置教程:https://openjfx.cn/openjfx-docs/#install-javafx

三、IDEA安裝和配置

IDEA下載地址:

https://www.jetbrains.com/zh-cn/idea/download/

IDEA JDK配置

一般程序會自動檢索環(huán)境變量中的JDK路徑打瘪,所以一般可以忽略這步

https://blog.csdn.net/qq_28289405/article/details/82698856

IDEA的JavaFX配置

https://www.jb51.net/article/198739.htm

IDEA的javaFX插件安裝

參考自:https://blog.csdn.net/hst_gogogo/article/details/82530929
在IDEA中啟用 JavaFX 插件:Ctrl+Alt+S,點擊plugin(插件)傻昙,然后搜索fx闺骚,勾上JavaFx的復(fù)選框,OK

四屋匕、創(chuàng)建一個JavaFX項目

參考自:

File--New--Project--next--填入項目名和路徑--Finsh




右鍵src--New--Java Class--類名(Test)



按照API文檔進行UI組件的接口繼承 和 方法重寫
API文檔:

  1. https://www.yiibai.com/javafx/
  2. http://www.javafxchina.net/main/

以下demo代碼源自:https://blog.csdn.net/wangmx1993328/article/details/80769199

Test.java:

/**
 * Created by Administrator on 2018/6/22 0022.
 * 下面這些javafx.*下面的API都是JDK8葛碧、JRE8中內(nèi)置好的借杰,直接調(diào)用即可
 */
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;
import java.util.concurrent.atomic.AtomicInteger;
/**
 * Java作為GUI(圖形化用戶界面)程序
 * 1过吻、入口必須繼承Application抽象類
 */
public class Test extends Application {
    /**
     * atomicInteger:用于統(tǒng)計用戶單擊按鈕的次數(shù)
     */
    private static AtomicInteger atomicInteger = new AtomicInteger(0);

    /**
     * 2、然后實現(xiàn)的它的start抽象方法
     *
     * @param primaryStage
     */
    @Override
    public void start(Stage primaryStage) {

        /**創(chuàng)建一個按鈕控件
         * 并設(shè)置按鈕上的文字蔗衡,同時為他綁定單擊事件纤虽,鼠標點擊按鈕后,控制臺輸出"Hello Friend"*/
        Button btn = new Button();
        btn.setText("Say 'Hello Friend'");
        btn.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                System.out.println(atomicInteger.addAndGet(1) + ":Hello Friend");
            }
        });

        /**創(chuàng)建一個堆棧面板绞惦,面板包含控件*/
        StackPane root = new StackPane();
        root.getChildren().add(btn);

        /**創(chuàng)建一個場景逼纸,場景包含面板*/
        Scene scene = new Scene(root, 300, 250);

        /**最后將場景放入到舞臺中,舞臺包含場景<-場景包含面板<-面板包含控件*/
        primaryStage.setTitle("Hello World");
        primaryStage.setScene(scene);
        /**顯示*/
        primaryStage.show();
    }

    public static void main(String[] args) {
        /**
         * GUI程序必須從入口的main方法進入并啟動
         * launch是Application中的济蝉,調(diào)用它則可啟動此GUI程序了
         */
        launch(args);
    }
}

或者可以將Test.java內(nèi)容替換為:
以下demo代碼來自:http://www.jikedaquan.com/1723.html

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.CheckBox;
import javafx.scene.control.RadioButton;
import javafx.scene.control.TextField;
import javafx.scene.layout.FlowPane;
import javafx.stage.Stage;

public class Test2 extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {
        FlowPane root = new FlowPane();

        root.setHgap(10);
        root.setVgap(20);
        root.setPadding(new Insets(15,15,15,15));

        // Button 1
        Button button1= new Button("Button1");
        root.getChildren().add(button1);


        // Button 2
        Button button2 = new Button("Button2");
        button2.setPrefSize(100, 100);
        root.getChildren().add(button2);

        // TextField
        TextField textField = new TextField("Text Field");
        textField.setPrefWidth(110);


        root.getChildren().add(textField);

        // CheckBox
        CheckBox checkBox = new CheckBox("Check Box");

        root.getChildren().add(checkBox);

        // RadioButton
        RadioButton radioButton = new RadioButton("Radio Button");
        root.getChildren().add(radioButton);

        Scene scene = new Scene(root, 550, 250);

        primaryStage.setTitle("FlowPane Layout Demo");
        primaryStage.setScene(scene);
        primaryStage.show();
    }


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

}

最后聲明一個Main主類杰刽,然后類調(diào)用默認的啟動類

jdk11之后將javafx分離出來,使得用jdk11執(zhí)行javafx時很容易出問題王滤。

右鍵src--New--Java Class--Main


Main.java

import javafx.application.Application;

/**
 * @Classname Main
 * @Desciption 調(diào)用默認的啟動類
 * @Date 2021/06/27
 * @Created  Robin
 */

public class Main {
    public static void main(String[] args) {
        Application.launch(Test.class);
    }
}

五贺嫂、運行

在Main.java打開的源碼界面中點擊右鍵--Run 'Main.main()'

demo1的運行界面

demo2的運行界面

六、補充

創(chuàng)建Test3.java

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextArea;
import javafx.scene.layout.FlowPane;
import javafx.stage.Stage;

public class Test3 extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {
        FlowPane root = new FlowPane();

        root.setHgap(5);
        root.setVgap(5);
        root.setPadding(new Insets(15,15,15,15));

        // Button 1
        Button button1= new Button("文件(F)");
        root.getChildren().add(button1);


        // Button 2
        Button button2 = new Button("編輯(E)");
        root.getChildren().add(button2);

        // Button 3
        Button button3 = new Button("格式(O)");
        root.getChildren().add(button3);

        // Button 4
        Button button4 = new Button("查看(V)");
        root.getChildren().add(button4);

        // Button 5
        Button button5 = new Button("幫助(H)");
        root.getChildren().add(button5);

        // TextField
        TextArea textArea = new TextArea(null);
        textArea.setPrefWidth(520);
        textArea.setPrefHeight(500);
        textArea.setWrapText(true);

        root.getChildren().add(textArea);


        Scene scene = new Scene(root, 550, 550);

        primaryStage.setTitle("新建文本文檔.txt - 記事本");
        primaryStage.setScene(scene);
        primaryStage.show();
    }


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

}

對應(yīng)修改Main.javaApplication.launch()的傳入的類為Test3.class

import javafx.application.Application;

/**
 * @Classname Main
 * @Desciption TODO
 * @Date 2021/06/27
 * @Created  Robin
 */

public class Main {
    public static void main(String[] args) {
        Application.launch(Test3.class);
    }
}

打開Main.java源碼文件雁乡,右鍵運行Main.main()

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末第喳,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子踱稍,更是在濱河造成了極大的恐慌曲饱,老刑警劉巖悠抹,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異扩淀,居然都是意外死亡楔敌,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門驻谆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來梁丘,“玉大人,你說我怎么就攤上這事旺韭》彰眨” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵区端,是天一觀的道長值漫。 經(jīng)常有香客問我,道長织盼,這世上最難降的妖魔是什么杨何? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮沥邻,結(jié)果婚禮上危虱,老公的妹妹穿的比我還像新娘。我一直安慰自己唐全,他們只是感情好埃跷,可當我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著邮利,像睡著了一般弥雹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上延届,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天剪勿,我揣著相機與錄音,去河邊找鬼方庭。 笑死厕吉,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的械念。 我是一名探鬼主播头朱,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼订讼!你這毒婦竟也來了髓窜?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎寄纵,沒想到半個月后鳖敷,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡程拭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年定踱,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片恃鞋。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡崖媚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出恤浪,到底是詐尸還是另有隱情畅哑,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布水由,位于F島的核電站荠呐,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏砂客。R本人自食惡果不足惜泥张,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鞠值。 院中可真熱鬧媚创,春花似錦、人聲如沸彤恶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽粤剧。三九已至歇竟,卻和暖如春挥唠,著一層夾襖步出監(jiān)牢的瞬間抵恋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工宝磨, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留弧关,地道東北人。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓唤锉,卻偏偏與公主長得像世囊,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子窿祥,可洞房花燭夜當晚...
    茶點故事閱讀 42,722評論 2 345

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