【问题标题】:How put ResouceBundle in the ContextMenu如何将 ResouceBundle 放入 ContextMenu
【发布时间】:2016-02-17 17:04:15
【问题描述】:

我正在使用 JavaFX 创建我的第一个应用程序,到目前为止效果很好。

在 FXMLLoader 上,我可以加载 ResourceBundle 文件,但我在 ContextMenu 中找不到任何功能相同的功能

我的工作代码

ResourceBundle bundle = ResourceBundle.getBundle("mymoney/view/linguas/messages");

FXMLLoader loader = new FXMLLoader();
            loader.setLocation(getClass()
                    .getResource(fxmlPath));
            loader.setResources(bundle);

我的上下文菜单

ContextMenu contextMenu = new ContextMenu();
        MenuItem cut = new MenuItem("%commos.menu.cut");
        MenuItem edit = new MenuItem("editar");
        MenuItem paste = new MenuItem("Paste");
        contextMenu.getItems().addAll(cut, edit, paste);
        cut.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                System.out.println("Cut...");
            }
        });

谁能给我指路?

【问题讨论】:

  • 如果存在这个.setResouce 方法会做什么?
  • @fabian 我编辑问题并将代码加载屏幕
  • 但是与ContextMenu有什么联系?
  • @Krismorte 您需要通过(至少)回答 fabian 的问题来使您的问题更加清晰。除了您显示的代码实际上没有上下文菜单这一事实之外,上下文菜单是一个包含一堆MenuItems 的对象,以及一些在屏幕上显示它的机制。如果你打电话给setResource(bundle);,你希望它做什么?这个功能没有明显的意义。
  • 并非如此。 %commos.menu.cut 看起来您正在尝试使用 FXML 语法在 Java 代码中进行资源解析,这显然不起作用。您根本没有为这段代码提供任何上下文,但您是否正在尝试做MenuItem cut = new MenuItem(bundle.getString("commos.menu.cut"));?显然,这假设无论您在哪里设置 ContextMenu 都可以访问 bundle

标签: java javafx


【解决方案1】:

要使用资源包中定义的字符串创建MenuItem,您可以这样做

MenuItem menuItem = new MenuItem(bundle.getString(resourceKey));

其中bundleResourceBundleresourceKey 是在包中映射到所需值的键。

【讨论】:

    猜你喜欢
    • 2021-01-16
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    • 1970-01-01
    • 2013-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多