我在一个应用程序上工作,它向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”中的注释......这个列表几乎不会结束!
答案 0 :(得分:0)
感谢您的帮助。总而言之,我们可以说,不可能自动化将属性绑定到UI元素的过程,并且必须手动完成。有计划在未来支持FXML中的双向绑定。来自kleopatra的链接:http://fxexperience.com/2011/10/fxml-why-it-rocks-and-the-next-phase/