[英]Java FXML Loading a view for later use
我想將FXML視圖加載到程序中並保存該視圖以供以后使用。
我目前有一個窗格,可以切換出FXML文件。
@FXML private Pane contentPane;
@FXML
public void toHome() {
contentPane.getChildren().setAll(FXMLLoader.load(getClass().getResource("../fxml/Home.fxml")));
}
@FXML
public void toBrowse() {
contentPane.getChildren().setAll(FXMLLoader.load(getClass().getResource("../fxml/Browse.fxml")));
}
問題是我在每個新的FXML頁面上都有文本字段,並且當我切換頁面時,我不希望它創建新的FXML引用並丟失該文本字段中的數據。 如何保留設置的原始頁面?
謝謝,
巴特
我認為您可以在此處使用緩存。 因此,基本上,將加載的fxml存儲在哈希圖中。
如果它不在其中,則將其加載並存儲到哈希圖中,否則從哈希圖中獲取並使用它。 這篇文章解釋說,緩存加載的FXML對象很好,例如,關於性能,請參見此處提到的“緩存FXML加載節點樹和控制器”一章。
private static Map<String, Object> map = new HashMap<>();
@FXML
private Pane contentPane;
@FXML
public void toHome() throws IOException {
Object loaded = map.get("home");
if (loaded == null) {
loaded = FXMLLoader.load(getClass().getResource("../fxml/Home.fxml"));
map.put("home", loaded);
}
contentPane.getChildren().setAll((Node) loaded);
}
(我必須將強制類型轉換插入Node
,否則它將無法編譯。我不確定這是否總是正確的)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.