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

时间:2018-08-20 12:23:50

标签: java javafx

我正在创建JavaFX 8应用程序,并在ComboBox中(我实际上使用了JFoenix JavaFX Material Design Library中的等效JavaFX控件),我想用字符串值填充其项目,但我希望这些值来自我已经创建的资源包。当我在“场景”构建器中预览FXML文档时,在场景构建器预览器中未发生ComboBox所需的更改。下面是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>

我指出这些值应该来自资源束,但是它们没有从资源束中加载。以下是预览图像。 请有人可以帮助我,将非常感谢。

preview image

1 个答案:

答案 0 :(得分:0)

正如我在my comment中提到的那样,似乎不支持将%fx:value一起使用。有一个feature request,但尚未实现,也可能从未实现(自2015年6月以来尚未更新)。

但是,您可以在控制器类中做您想做的事情。

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字段将被注入给ResourceBundle的{​​{1}}。或者,您可以实现Initializable接口。

FXMLLoader