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(...) 
}); 
+0

一种不同的方法,但如果您的目标是尽量减少代码冗余,您可以创建自己的扩展JavaFX标签的类,并在构造函数中传入(语言属性,值为LABEL_1)。在构造函数中,您可以设置从LanguageDatabase.get(LABEL_1)获得的标签的文本,并添加语言属性的侦听器。 – ESipalis

随着f*'s answer的帮助下,我所在做什么,我需要的方法。有点难以发现。

第二个参数是正在观看的属性。这是我需要的关键。