gpt4 book ai didi

javafx-2 - Javafx 中所有场景的通用菜单项

转载 作者:行者123 更新时间:2023-12-02 08:02:05 27 4
gpt4 key购买 nike

我想开发一个多场景Java FX应用程序。但我希望所有场景都有通用的菜单。我认为使用 FXML 我可以在场景中创建菜单。但是,即使在导航到其他屏幕后,我可以在所有场景中使用相同的菜单吗?

如果有的话,怎么样。否则请让我知道任何替代方案。

最佳答案

是的,这是可能的。我在自己的应用程序中使用了这种机制。

我首先要做的是制作一个带有菜单栏的 FXML 和一个包含内容的 AnchorPane。该 FXML 在应用程序启动时加载。

我使用一个 Context 类(基于 Sergey 在这个问题中的答案: Multiple FXML with Controllers, share object ),其中包含一个方法 ShowContentPane(String url) 方法:

public void showContentPane(String sURL){
try {
getContentPane().getChildren().clear();
URL url = getClass().getResource(sURL);

//this method returns the AnchorPane pContent
AnchorPane n = (AnchorPane) FXMLLoader.load(url, ResourceBundle.getBundle("src.bundles.bundle", getLocale()));
AnchorPane.setTopAnchor(n, 0.0);
AnchorPane.setBottomAnchor(n, 0.0);
AnchorPane.setLeftAnchor(n, 0.0);
AnchorPane.setRightAnchor(n, 0.0);

getContentPane().getChildren().add(n);

} catch (Exception ex) {
System.out.println(ex.getMessage());
}
}

所以基本上发生的是:

程序启动时,在Context中设置内容 Pane :

@Override
public void initialize(URL url, ResourceBundle rb) {
Context.getInstance().setContentPane(pContent); //pContent is the name of the AnchorPane containing the content
...
}

当选择按钮或菜单项时,我会在内容 Pane 中加载 FXML:

@FXML
private void handle_FarmerListButton(ActionEvent event) {
Context.getInstance().showContentPane("/GUI/user/ListUser.fxml");
}

希望这有帮助:)

关于javafx-2 - Javafx 中所有场景的通用菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15179299/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com