我正在创建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>
我指出这些值应该来自资源束,但是它们没有从资源束中加载。以下是预览图像。 请有人可以帮助我,将非常感谢。
答案 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