欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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方法,
//加載布局類并且加載點(diǎn)擊事件
        //在這里進(jìn)行方法的執(zhí)行,(這里對controller私有的stage進(jìn)行賦值,
//然后對他進(jìn)行事件操作,之間綁定事件,但是不執(zhí)行)
        ((loginController)loginFxml.getController()).setStage(primaryStage);
        primaryStage.show();

    }

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

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

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

注意:這時(shí)候你如果要想自己進(jìn)行初始化一些字體,類型,等等...  可以寫在Controller類中的initialize方法中(這個(gè)名字不能變),因?yàn)樵诩虞d這個(gè)文件時(shí)會指向這個(gè)方法

(如果在進(jìn)行場景更換的時(shí)候,在這個(gè)方法中不能寫對這個(gè)scene的操作,因?yàn)檫@個(gè)scene還是原來stage調(diào)用的scene,后面又進(jìn)行場景,相當(dāng)于沒有操作)

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

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

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

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

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

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

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

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

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

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

3.兩個(gè)選項(xiàng)小功能

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

首先是一個(gè)toggleButton設(shè)置一個(gè)按鈕,能夠判斷是否點(diǎn)擊可視化,然后在密碼文本那里要設(shè)置兩個(gè)文本,一個(gè)password,一個(gè)普通文本,普通文本要綁定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是否點(diǎn)擊,可以判斷是否想要能夠可視選項(xiàng)

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

相關(guān)文章

  • Netty中最簡單的粘包解析方法分享

    Netty中最簡單的粘包解析方法分享

    黏包 是指網(wǎng)絡(luò)上有多條數(shù)據(jù)發(fā)送給服務(wù)端, 但是由于某種原因這些數(shù)據(jù)在被接受的時(shí)候進(jìn)行了重新組合,本文分享了一種最簡單的黏包解析方法, 非常適用于初初初級選手
    2023-05-05
  • java Aop實(shí)現(xiàn)自動填充字段值示例

    java Aop實(shí)現(xiàn)自動填充字段值示例

    這篇文章主要為大家介紹了Aop實(shí)現(xiàn)自動填充字段值示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • Java源碼解析CopyOnWriteArrayList的講解

    Java源碼解析CopyOnWriteArrayList的講解

    今天小編就為大家分享一篇關(guān)于Java源碼解析CopyOnWriteArrayList的講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Java實(shí)現(xiàn)簡單字符生成器代碼例子

    Java實(shí)現(xiàn)簡單字符生成器代碼例子

    這篇文章主要介紹了Java實(shí)現(xiàn)簡單字符生成器代碼例子,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2015-06-06
  • 淺談Java內(nèi)存泄露

    淺談Java內(nèi)存泄露

    內(nèi)存泄漏(Memory Leak)是指程序中己動態(tài)分配的堆內(nèi)存由于某種原因程序未釋放或無法釋放,造成系統(tǒng)內(nèi)存的浪費(fèi),導(dǎo)致程序運(yùn)行速度減慢甚至系統(tǒng)崩潰等嚴(yán)重后果。下面我們來一起了解如何解決
    2019-05-05
  • Java實(shí)現(xiàn)的二叉樹常用操作【前序建樹,前中后遞歸非遞歸遍歷及層序遍歷】

    Java實(shí)現(xiàn)的二叉樹常用操作【前序建樹,前中后遞歸非遞歸遍歷及層序遍歷】

    這篇文章主要介紹了Java實(shí)現(xiàn)的二叉樹常用操作,包括二叉樹的前序建樹,前中后遞歸非遞歸遍歷及層序遍歷等相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • Spring實(shí)現(xiàn)在非controller中獲取request對象

    Spring實(shí)現(xiàn)在非controller中獲取request對象

    這篇文章主要介紹了Spring實(shí)現(xiàn)在非controller中獲取request對象方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 淺析Spring IOC bean為什么默認(rèn)是單例

    淺析Spring IOC bean為什么默認(rèn)是單例

    單例的意思就是說在 Spring IoC 容器中只會存在一個(gè) bean 的實(shí)例,無論一次調(diào)用還是多次調(diào)用,始終指向的都是同一個(gè) bean 對象,本文小編將和大家一起分析Spring IOC bean為什么默認(rèn)是單例,需要的朋友可以參考下
    2023-12-12
  • 解決SpringBoot打成jar運(yùn)行后無法讀取resources里的文件問題

    解決SpringBoot打成jar運(yùn)行后無法讀取resources里的文件問題

    這篇文章主要介紹了解決SpringBoot打成jar運(yùn)行后無法讀取resources里的文件問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • 一個(gè)通用的Java分頁基類代碼詳解

    一個(gè)通用的Java分頁基類代碼詳解

    這篇文章主要介紹了一個(gè)通用的Java分頁基類代碼詳解,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12

最新評論