当前位置: 首页 > 知识库问答 >
问题:

Java FX中所有场景的公共菜单项

佟寒
2023-03-14

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

如果是,情况如何。否则让我知道任何替代方案。

共有1个答案

郑正文
2023-03-14

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

我首先要做的是用菜单栏和一个包含内容的AnchorPane创建一个FXML。此FXML在应用程序启动时加载。

我使用了一个上下文类(基于Sergey在这个问题中的答案:多个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());
    }
}
@Override
public void initialize(URL url, ResourceBundle rb) {
    Context.getInstance().setContentPane(pContent); //pContent is the name of the AnchorPane containing the content
    ...
}
@FXML
private void handle_FarmerListButton(ActionEvent event) {
    Context.getInstance().showContentPane("/GUI/user/ListUser.fxml");
}
 类似资料:
  • 问题内容: 我有一个使用javafx Scene来渲染某些东西的应用程序,并且我想将该渲染结果放入我在Javafx中创建的某些GUI中。我该怎么做? 基本上,有一些容器可以放入场景,然后将其放入GUI。 抱歉,如果是新手问题,我是JavaFX的新手 问题答案: 该场景只有一个顶级父节点作为根。您可以获取它并放入另一个场景。

  • 问题内容: 标题可能有点含糊,所以让我对其定义更好一些。我有一段有效的代码(在下面):我正在开发的游戏的简单主菜单。除“开始”按钮外,其他所有内容均正常运行。 我想要做的是单击“开始”按钮,并在同一阶段(窗口)中出现一个新场景。我不想看到一个新窗口打开。我已经与Java经验丰富的人进行了交谈,他们告诉我为MenuFX和GameFX创建单独的类。如果是这种情况,我需要从MenuFX类中调用GameF

  • 我创建了一个游戏,我想给它添加一个开始屏幕,我使用FXML添加了它,还添加了两个按钮(开始和退出)。 按下开始按钮后,我希望游戏加载场景并切换到游戏开始。我对如何做有一个粗略的想法,但我有点挣扎,因为我的SampleController类不知道如何启动游戏等,因为所有代码(以及加载初始开始菜单的代码)都在我的主类中,所以我尝试了这样的事情: 我尝试使用一个函数来切换场景,但它不起作用,也试图使用获

  • 接口说明 查询公有场景(分页查询场景列表) 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 GET /wish3dearth/api/scene/v1.0.0/publicScenePageList 是否需要登录 否 请求字段说明 参数 类型 请求类型 是否必须 说明 title string query 否 场景名称 userSeachTy

  • 接口说明 查询公有场景(分页查询场景列表) 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 如开启https功能,请求地址的协议应改为https,如:https://www.example.com/wish3dearth/api/access/v1.0.0/getLicenseInfo API地址 GET /wish3dearth/api/scene/v

  • 我基本上是Java FX 2的新手。 场景: 我有3个场景,我想要一种添加菜单栏的方法,这样我就不想显式地从以前的场景中删除菜单栏并将其添加到新的场景中。例如,父场景或菜单栏以某种方式附加到舞台。我的意思是菜单栏只添加了一次,无论前面有没有场景,它都会一直出现。 如果这是可能的,我该怎么做? 以下是 Oracle 文档提供的 JavaFX http://docs.oracle.com/javafx