第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

加載 FXML 文件時(shí),是否也加載了關(guān)聯(lián)的控制器

加載 FXML 文件時(shí),是否也加載了關(guān)聯(lián)的控制器

至尊寶的傳說 2023-06-08 19:18:16
我已經(jīng)為 ScreenController 類(一個(gè)由每個(gè)屏幕的單獨(dú)控制器類擴(kuò)展的類)創(chuàng)建了一個(gè)解決方案,它將處理我的應(yīng)用程序中的基線屏幕層次結(jié)構(gòu)。在我的課程中,我使用一個(gè)函數(shù)將另一個(gè) FXML 文件的內(nèi)容添加(加載)到當(dāng)前控制器的當(dāng)前 AnchorPane 中。我的問題是:1)加載新的 FXML 時(shí),F(xiàn)XML 使用的類(或者更確切地說,特定控制器)是否也被實(shí)例化/加載?2) 執(zhí)行此操作時(shí),如果實(shí)例化/加載了新的 FXML 類,是否從內(nèi)存中釋放了先前的 FXML 類?還是它仍在使用內(nèi)存。屏幕轉(zhuǎn)換代碼:public void setScreen(String screen) throws Exception{    Parent root = FXMLLoader.load(getClass().getResource(screen));    window.getChildren().setAll(root);}
查看完整描述

2 回答

?
翻過高山走不出你

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超3個(gè)贊

了解這FXMLLoader不是框架,盡管它可以用作框架的基礎(chǔ)。沒有容器來管理控制器類的實(shí)例或加載的根。由 所創(chuàng)建的對象會發(fā)生什么FXMLLoader由應(yīng)用程序代碼決定。

FXML 文件只是描述對象圖的 XML 格式的文本文件。簡單FXMLLoader地解釋該文件并創(chuàng)建所述對象圖1。當(dāng)然,F(xiàn)XML 格式有一些專門添加的語法來處理 JavaFX 的特定功能(例如添加事件處理程序、綁定等)。


1)加載新的 FXML 時(shí),F(xiàn)XML 使用的類(或者更確切地說,特定控制器)是否也被實(shí)例化/加載?

如果您fx:controller在 FXML 文件的根元素中有一個(gè)屬性,那么是的,將創(chuàng)建指定控制器類的新實(shí)例(默認(rèn)情況下)。FXML 文件描述的所有對象也是如此。換句話說,每次加載 FXML 文件時(shí),都會FXMLLoader返回根和控制器的新實(shí)例。控制器實(shí)例的創(chuàng)建方式可以通過controllerFactoryFXMLLoader.

如果您沒有fx:controller屬性,那么要么沒有控制器實(shí)例,要么您需要以編程方式指定一個(gè)。在這種情況下,您手動提供控制器實(shí)例。

注意:永遠(yuǎn)不要在不同的 FXML 文件之間共享控制器類,也不要在不同的負(fù)載之間共享控制器實(shí)例。這樣做會引起各種混亂,并且不必要地復(fù)雜。也就是說,擁有一個(gè)公共抽象類可能是合適的,只要它只有每個(gè)子類共有的狀態(tài)和行為。


2) 執(zhí)行此操作時(shí),如果實(shí)例化/加載了新的 FXML 類,是否從內(nèi)存中釋放了先前的 FXML 類?還是它仍在使用內(nèi)存。

如本答案開頭所述,FXMLLoader簡單地解釋 FXML 文件并創(chuàng)建適當(dāng)?shù)膶ο髨D1。一旦它這樣做了,創(chuàng)建的對象會發(fā)生什么就取決于你了。只要對象可以被任何線程強(qiáng)訪問,它們就不會被垃圾回收。

如果你問如果你重用一個(gè)實(shí)例會發(fā)生什么FXMLLoader,我不完全確定,因?yàn)槲覐膩頉]有嘗試過。FXMLLoader可以這么說,我建議您每次要加載 FXML 文件(或使用靜態(tài)load(URL)方法)時(shí)都創(chuàng)建一個(gè)新實(shí)例。


1. 創(chuàng)建對象圖后,如果存在控制器,則還將FXMLLoader注入任何適當(dāng)?shù)淖侄尾ⅰ版溄印彼羞m當(dāng)?shù)姆椒ā?/sup>


查看完整回答
反對 回復(fù) 2023-06-08
?
LEATH

TA貢獻(xiàn)1936條經(jīng)驗(yàn) 獲得超7個(gè)贊

這取決于您如何使用 FXMLLoader。有靜態(tài)和非靜態(tài)加載方法,還有可以提供控制器實(shí)例的方法。最好查看 FXMLLoader 類文檔中的各種加載方法。



查看完整回答
反對 回復(fù) 2023-06-08
  • 2 回答
  • 0 關(guān)注
  • 151 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號