JavaFX - 使用像ChangeListener一样的绑定?
问题描述:
我有一个ObjectProperty
,它处理我的程序当前显示的语言。当该属性更改时,每个控件中的每个标签都需要更新为正确的语言。JavaFX - 使用像ChangeListener一样的绑定?
现在我这样做,通过执行以下操作:
ObjectProperty<Language> activeLanguage = ...
Label exampleLabel = new Label();
activeLanguage.addListener((observable, oldValue, newValue) ->
{
exampleLabel.setText(LanguageDatabase.get(LABEL_1));
// Langdatabase knows what the active language is
// and returns a string of that label's intended message
// but translated to the active language
}
我让这些听众为每一个标签,按钮中的一个,等
如何做到这一点与Bindings
?
例如:
ObjectProperty<Language> activeLanguage = ...
Label exampleLabel = new Label();
exampleLabel.textProperty().bind(
{
// How do I say...
// bind to the language property,
// but return something completely different
// ie the LanguageDatabase.get(...)
});
一种不同的方法,但如果您的目标是尽量减少代码冗余,您可以创建自己的扩展JavaFX标签的类,并在构造函数中传入(语言属性,值为LABEL_1)。在构造函数中,您可以设置从LanguageDatabase.get(LABEL_1)获得的标签的文本,并添加语言属性的侦听器。 – ESipalis