gpt4 book ai didi

java - 如何在 JavaFX 中将 SimpleLocalizedStringProperty (controlsfx-plugin) 与 ResourceBundle 结合使用

转载 作者:行者123 更新时间:2023-12-01 09:44:02 24 4
gpt4 key购买 nike

我正在使用 controlsfx 插件,我遇到了 StringProperty 的实现,其类型为:SimpleLocalizedStringProperty,并从以下位置导入:
import impl.org.controlsfx.i18n.SimpleLocalizedStringProperty; 有人使用过此属性吗?根据其名称,我认为它应该可以通过 ResourceBundle 来简化使用。但没有关于如何将其与基于区域设置的 ResourceBundles 绑定(bind)的教程或详细信息。

如果这里有人能够与我们分享他/她对此酒店的体验,我们将不胜感激。

最佳答案

此类应该从 ResourceBundle 加载具有特定模式的字符串。并保持其他字符串不变。如果字符串以 @@ 开头,字符串的其余部分用作 controlsfx.properties properties file 的键.

示例:

@Override
public void start(Stage primaryStage) {
SimpleLocalizedStringProperty prop = new SimpleLocalizedStringProperty("Hello World");
Button btn = new Button();
btn.textProperty().bind(prop);
btn.setOnAction((ActionEvent event) -> {
prop.set("@@font.dlg.title");
});

StackPane root = new StackPane();
root.getChildren().add(btn);

Scene scene = new Scene(root, 500, 300);

primaryStage.setScene(scene);
primaryStage.show();
}

但是我的建议:此时不要使用该类(class)!!!(2016 年 7 月)

它包含一些基本缺陷:

  • getValue方法被重写以返回本地化结果。方法很多,包括 getValue ,使用get但是,这可能会导致意外行为。只需更换即可

    btn.textProperty().bind(prop);

    btn.textProperty().bind(Bindings.when(new SimpleBooleanProperty(true)).then(prop).otherwise((String) null))

    在上面的示例中,我们使用属性的键而不是本地化值。

    get()getValue()应该返回相同的值,而该类不会这样做,因此违反了 Liskov Substitution Principle .

  • 该值可以在不触发更新的情况下更改。通过更改 Locale使用例如impl.org.controlsfx.i18n.Localization.setLocale(Locale.FRANCE); (假设更改前区域设置不是 FRANCE)将更改 getValue() 返回的值而不通知听众。

关于java - 如何在 JavaFX 中将 SimpleLocalizedStringProperty (controlsfx-plugin) 与 ResourceBundle 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38213080/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com