最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Javafx利用fxml變換場景的實現(xiàn)示例

 更新時間:2024年07月10日 08:37:20   作者:2301_80311013  
本文主要介紹了Javafx利用fxml變換場景的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

1.fxml中的線程問題

    public void start(Stage stage) throws Exception {
        primaryStage = stage;
        Scene loginScene;
        FXMLLoader loginFxml = new FXMLLoader(mainContrller.class.getResource("/resource/fxml/loginmenu.fxml"));
        loginScene = new Scene(loginFxml.load());
        primaryStage.initStyle(StageStyle.TRANSPARENT);
        primaryStage.getIcons().add(new Image("resource/img/icon.png"));

        primaryStage.setScene(loginScene);      //這里會執(zhí)行initialize方法,
//加載布局類并且加載點擊事件
        //在這里進行方法的執(zhí)行,(這里對controller私有的stage進行賦值,
//然后對他進行事件操作,之間綁定事件,但是不執(zhí)行)
        ((loginController)loginFxml.getController()).setStage(primaryStage);
        primaryStage.show();

    }

在這個代碼中,在JavaFX中,FXMLLoader是用來加載FXML文件并將其轉(zhuǎn)換為Java對象(例如控制器類)的工具。在這時,就已經(jīng)創(chuàng)建了一個實例對象對應的Controller。

當您使用FXMLLoader加載FXML文件時,它會異步地執(zhí)行以下步驟:

  • 加載FXML文件:FXMLLoader會從指定的URL加載FXML文件。
  • 解析FXML:它會解析FXML文件,并將其轉(zhuǎn)換為Java對象,包括創(chuàng)建控制器類的新實例。
  • 綁定和布局:它會將FXML文件中的布局和控件與Java對象綁定,并設(shè)置它們的布局和樣式。
  • 事件處理:它會設(shè)置控件的事件處理方法,如按鈕的點擊事件等。

注意:這時候你如果要想自己進行初始化一些字體,類型,等等...  可以寫在Controller類中的initialize方法中(這個名字不能變),因為在加載這個文件時會指向這個方法

(如果在進行場景更換的時候,在這個方法中不能寫對這個scene的操作,因為這個scene還是原來stage調(diào)用的scene,后面又進行場景,相當于沒有操作)

在整個過程中,FXMLLoader是使用JavaFX的后臺線程(也稱為JavaFX線程)來執(zhí)行這些操作的,這是為了保持UI線程的響應性。這意味著在用戶界面(UI)線程中,您不會看到任何阻塞,即使FXMLLoader正在執(zhí)行耗時的操作。

FXMLLoader完成加載并調(diào)用load()方法時,它會返回一個Parent對象,這是FXML文件中定義的根節(jié)點的JavaFX表示。您可以將這個Parent對象添加到場景中,然后設(shè)置場景到舞臺上。

primaryStage.setScene(loginScene);被執(zhí)行時,FXMLLoaderload()方法已經(jīng)完成,并且loginScene已經(jīng)被創(chuàng)建。此時,loginScene中的布局類(控制器類)已經(jīng)被加載,并且與FXML文件中的控件綁定的事件處理方法也已經(jīng)設(shè)置好了。

后面添加代碼時,就可以安全地執(zhí)行與控制器類相關(guān)的操作,因為控制器類已經(jīng)加載并準備好使用。例如,您可以調(diào)用控制器類的方法,設(shè)置舞臺屬性等。

FXMLLoaderload()方法是在后臺線程中執(zhí)行的,以確保UI線程的響應性。當load()方法完成后,您可以在主線程中安全地使用控制器類和FXML文件中的控件。

這其中最大的坑就是要意識到initialize這個方法是要進行初始化的,不要在這個方法中直接對controller的成員直接進行操作(除非是賦值操作,然后再進行更改操作)

2.不同Controller之間交互的方式

1.可以在每個controller中私有一個stage,然后再在Controller類中創(chuàng)建一個setstage方法,可以像上面一樣執(zhí)行,對這個stage進行賦值,然后就可以操作這個場景。

    FXMLLoader loginFxml = new FXMLLoader(mainContrller.class.getResource("/resource/fxml/loginmenu.fxml"));
        loginScene = new Scene(loginFxml.load());
//這里執(zhí)行controller類中的方法
//這個((loginController)loginFxml.getController())已經(jīng)是個實例對象了
((loginController)loginFxml.getController()).setStage(primaryStage);

2.可以在主控制類中公開這個stage,并設(shè)置這個靜態(tài)的,其它的controller直接在initialize里面進行賦值操作。

3.兩個選項小功能

密碼的可視化(這操作感覺很復雜,也不知道有沒有簡單方法)

首先是一個toggleButton設(shè)置一個按鈕,能夠判斷是否點擊可視化,然后在密碼文本那里要設(shè)置兩個文本,一個password,一個普通文本,普通文本要綁定password文本,并且要設(shè)置普通文本不可操作disable ="true";

ToggleButton eyeButton;
eyeButton.selectedProperty().addListener(new ChangeListener<Boolean>() {
            @Override
            public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
                if (newValue )
                {
                    System.out.println("isSelected");
                    eyeButton.setText(eyeUnicode);
                    passwordFiled.setVisible(true);
                    passwordFiledOut.setVisible(false);
                }
                else
                {
                    eyeButton.setText(uneyeUnicode);
                    passwordFiled.setVisible(false);
                    passwordFiledOut.setVisible(true);
                }
            }
        });

這里監(jiān)聽toggleButton是否點擊,可以判斷是否想要能夠可視選項

到此這篇關(guān)于Javafx利用fxml變換場景的實現(xiàn)示例的文章就介紹到這了,更多相關(guān)Javafx fxml變換場景內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java成員變量默認值原理詳解

    Java成員變量默認值原理詳解

    這篇文章主要介紹了Java成員變量默認值原理詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • java 實現(xiàn)圖片圓角處理、背景透明化

    java 實現(xiàn)圖片圓角處理、背景透明化

    這篇文章主要介紹了java 實現(xiàn)圖片圓角處理、背景透明化,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • java分頁攔截類實現(xiàn)sql自動分頁

    java分頁攔截類實現(xiàn)sql自動分頁

    這篇文章主要為大家詳細介紹了java分頁攔截類可以實現(xiàn)sql自動分頁,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Spring Boot2讀取配置常用方法代碼實例

    Spring Boot2讀取配置常用方法代碼實例

    這篇文章主要介紹了Spring Boot2讀取配置常用方法代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11
  • Java中Optional的orElse操作及orElse與orElseGet的區(qū)別詳解

    Java中Optional的orElse操作及orElse與orElseGet的區(qū)別詳解

    Optional中orElse可能導致空指針異常,orElseGet可以避免這種情況,這篇文章主要介紹了Java中Optional的orElse操作及orElse與orElseGet區(qū)別的相關(guān)資料,文中給出了詳細的代碼示例,需要的朋友可以參考下
    2025-05-05
  • Spark學習筆記(一)Spark初識【特性、組成、應用】

    Spark學習筆記(一)Spark初識【特性、組成、應用】

    這篇文章主要介紹了Spark學習筆記之Spark初識,簡單分析了spark四大特性、基本組成、應用場景,需要的朋友可以參考下
    2020-02-02
  • 淺談利用Session防止表單重復提交

    淺談利用Session防止表單重復提交

    這篇文章主要介紹了淺談利用Session防止表單重復提交,簡單介紹表單重復提交的情況,分析,以及解決方法代碼示例,具有一定借鑒價值,需要的朋友可以了解下。
    2017-12-12
  • Java源碼解析之ConcurrentHashMap

    Java源碼解析之ConcurrentHashMap

    今天帶大家分析Java源碼,文中對Java ConcurrentHashMap介紹的非常詳細,有代碼示例,對正在學習Java的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-05-05
  • Quarkus集成apollo配置中心

    Quarkus集成apollo配置中心

    這篇文章主要介紹了Quarkus集成apollo配置中心,文中詳細的講解了Quarkus的config構(gòu)成,以及apollo集成實現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-02-02
  • SpringBoot3整合EasyExcel動態(tài)實現(xiàn)表頭重命名

    SpringBoot3整合EasyExcel動態(tài)實現(xiàn)表頭重命名

    這篇文章主要為大家詳細介紹了SpringBoot3整合EasyExcel如何通過WriteHandler動態(tài)實現(xiàn)表頭重命名,文中的示例代碼講解詳細,有需要的可以了解下
    2025-03-03

最新評論

越西县| 商丘市| 荆门市| 河津市| 潜江市| 兴文县| 离岛区| 大田县| 龙州县| 广州市| 大姚县| 体育| 沁源县| 宿州市| 鹤峰县| 龙山县| 阳谷县| 安阳县| 英山县| 张家港市| 和政县| 固原市| 布尔津县| 临安市| 博湖县| 巴马| 精河县| 开平市| 太和县| 安泽县| 关岭| 五莲县| 淮南市| 卓资县| 宣威市| 邻水| 辽阳市| 丹巴县| 常山县| 江城| 即墨市|