轻松将许多JavaFX属性绑定到UI节点

时间:2018-03-19 15:09:16

标签: java javafx properties

我在一个应用程序上工作,它向SQL数据库询问不同的值。在这里,我有一个表近40列,我的pojos有JavaFX属性。所以现在我将这些填充了数据库数据的属性绑定到UI-Components,如textfields等。

我现在这样做的方法是手动将所有ui属性绑定到pojo属性。但这是一个有40个条目的大方法,可以手动绑定所有属性。

你能告诉我一个更好的方法吗?也许像javafx的表系统用字符串绑定属性?

@James_D:谢谢你的回复。我的想法是扩展文本字段等,使用我在fxml中设置的字符串值,此字符串=要绑定的属性的名称。这几乎就像javafx表的映射系统。

@kelopatra:我不想用值填充表格。我已经有了这个系统。我想要的是自动化我的ui和我的pojo之间的绑定过程。例如:

这是我的pojo,它填充了数据库的值:

public class SimplePojo {

private final StringProperty button_propertie = new SimpleStringProperty();
private final StringProperty lable_propertie = new SimpleStringProperty();

public SimplePojo(String button, String lable){
    this.button_propertie.setValue(button);
    this.lable_propertie.setValue(lable);
}

public String getLable_propertie() {
    return lable_propertie.get();
}

public void setLable_propertie(String value) {
    lable_propertie.set(value);
}

public StringProperty lable_propertieProperty() {
    return lable_propertie;
}

public String getButton_propertie() {
    return button_propertie.get();
}

public void setButton_propertie(String value) {
    button_propertie.set(value);
}

public StringProperty button_propertieProperty() {
    return button_propertie;
}

这是我的控件,用于向用户显示值:

public class FXMLDocumentController implements Initializable {

@FXML
private Label label;
@FXML
private Button button;

@Override
public void initialize(URL url, ResourceBundle rb) {
    //Getting result from Database
    SimplePojo sp = new SimplePojo("label_text", "button_text");
    //Bind properties to ui elements
    doBindings(sp);
}    

public void doBindings(SimplePojo sp){
    this.button.textProperty().bindBidirectional(sp.button_propertieProperty());
    this.label.textProperty().bindBidirectional(sp.lable_propertieProperty());
    //If i have 50 fields in pojo ... this would not end ....
}

在控制器中这是问题...看看“doBindings”中的注释......这个列表几乎不会结束!

1 个答案:

答案 0 :(得分:0)

感谢您的帮助。总而言之,我们可以说,不可能自动化将属性绑定到UI元素的过程,并且必须手动完成。有计划在未来支持FXML中的双向绑定。来自kleopatra的链接:http://fxexperience.com/2011/10/fxml-why-it-rocks-and-the-next-phase/