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

如何在fxml文档中使用resourcebundle中的字符串填充javafx ChoiceBox

盖诚
2023-03-14

我正在创建一个JavaFX8应用程序,并且在一个组合框中(我实际上使用了JFoenix JavaFX Material Design库中等效的JavaFX控件),我希望用字符串值填充它的项,但是我希望这些值来自我已经创建的资源包。当我在场景生成器中预览FXML文档时,在场景生成器预览器中不会出现对组合框所需的更改。下面是FXML代码。

<JFXComboBox fx:id="languageBox" prefHeight="25.0" prefWidth="321.0" promptText="%select-language-text">
        <items>
           <FXCollections fx:factory="observableArrayList">
              <String fx:value="%english-text" />
              <String fx:value="%french-text" />
              <String fx:value="%spanish-text" />
              <String fx:value="%german-text" />
           </FXCollections>
        </items>
     </JFXComboBox>

我指出这些值应该来自资源包,但它们不是从资源包加载的。下面是预览图像。请有人能帮我做这件事,这将是非常感谢的。

共有1个答案

聂和宜
2023-03-14

正如我在评论中提到的,似乎不支持将%语法与fx:value一起使用。对此有一个功能请求,但尚未实现,可能永远不会实现(问题自2015年6月以来一直没有更新)。

但是,您可以在controller类中执行您想要的操作。

public class Controller {

    @FXML private JFXComboBox<String> languageBox;
    @FXML private ResourceBundle resources;

    @FXML
    private void initialize() {
        languageBox.getItems().addAll(
            resources.getString("english-text"),
            resources.getString("french-text"),
            resources.getString("spanish-text"),
            resources.getString("german-text")
        );
    }

}

resources字段将与赋予FXMLLoaderResourceBundle一起注入。或者可以实现initializable接口。

public class Controller implements Initializable {

    @FXML private JFXComboBox<String> languageBox;

    @Override
    public void initialize(URL location, ResourceBundle resources) {
        languageBox.getItems().addAll(
            resources.getString("english-text"),
            resources.getString("french-text"),
            resources.getString("spanish-text"),
            resources.getString("german-text")
        );
    }

}
 类似资料:
  • 问题内容: 有一些简单的方法可以在Java中填充字符串吗? 似乎应该在类似StringUtil的API中使用某些东西,但是我找不到能做到这一点的任何东西。 问题答案: 有几种方法:leftPad,[rightPad](https://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/Str

  • 假设我有一个整数数组,如和一个简单的字符串,如。我如何循环通过数组和填充每一个值。假设是这样的: 输出: 到目前为止,我已经尝试了以下内容: 但是,它在print语句中给出了。解决这个问题最好的方法是什么?

  • 问题内容: 我想填充与 我只有两列。我做不到 到目前为止,我尝试过的是: 桌上什么也没显示。但是当我进行打印时,我看到的是我添加的数据。但是在桌子上什么也没显示。 我创建列如下: 我在Internet上看到了一些示例,这些示例中创建了一个对象来填充对象,但我不想仅为表视图创建类。还有其他可行的方法吗? 编辑: 我只想拥有这样的东西: 问题答案: 首先,您必须在FXML文件或代码中创建table’c

  • 我正在创建一个战舰游戏应用程序来学习OOP,Java。我想显示一个“空海”供玩家参考放置他们的舰队。下面是我的游戏板课的开始: 我把这叫做主要的:

  • 问题内容: 我想用空格填充字符串。我知道以下内容适用于零: 但是,当我想要这个时我该怎么办?: 当然,我可以测量字符串的长度并这样做,但是我想用最短的方法。 问题答案: 你可以使用 返回长度为的左对齐字符串。使用指定的fillchar填充(默认为空格)。如果小于,则返回原始字符串。

  • 我只找到了如何填充一个字符数组相同的字符,如: 我尝试的是: 我总是得到错误,将abc-数组从char[]更改为long[]。\ 编辑: 我想要输出的是,我在数组的最后给出5个字符(例如a、b、c、d、e) 提前感谢:)