我遇到了以下情况的挑战。假设我有一个名为DatabaseRecord的记录,它是一个包含多个字段的POJO:
public class DatabaseRecord {
private Long recordId;
private StringProperty foreignKeyId;
private StringProperty otherValuesForMainRecord....
... setters/getters
public class LookUpDataValue {
private String recordId;
private String descriptiveText;
private String otherValues.....
....
我有一个组合框,显示foreignKeyId值的可选值,如下所示:
@FXML
ComboBox<LookUpDataValue> combobox;
combobox.setCellFactory
(new Callback<ListView<LookUpDataValue>, ListCell<LookUpDataValue>>() {
@Override
public ListCell<LookUpDataValue> call(ListView<LookUpDataValue> p) {
ListCell<LookUpDataValue> cell = new ListCell<LookUpDataValue>() {
@Override
protected void updateItem(LookUpDataValue item, boolean empty) {
super.updateItem(item, empty);
if (empty) {
setText("");
} else {
setText(item.getDescriptiveText());
}
}
};
return cell;
}
});
我想将POJO DatabaseRecord.foreignKeyIdProperty双向绑定到combobox.valueProperty() - 但这不起作用,因为一个是字符串,一个是LookUpDataValue对象。
我希望在加载记录时正确设置这个组合框,并在记录发生变化时相反地更新记录。
我很感激任何关于我能在哪里找到这个例子的指示...
答案 0 :(得分:0)
我无法更改我的数据模型,因此我发现以下解决方案有效。
// Handle ComboBox event.
myComboBox.setOnAction((event) -> {
LookUpDataValue selected = myComboBox.getSelectionModel().getSelectedItem();
if(selected != null){
dto.setForeignKeyId(selected.getId());
}
});
这很有效。感谢您的评论。