我是JavaFX的新手,请耐心等待。我想要有一个TableView,其中一些列将是复选框。我的意图是将这些绑定到模型对象中的布尔属性。模型对象具有定义为SimpleBooleanProperty的属性,并具有getter/setter和property方法。我已经验证表格“看到”了模型对象,因为我将表格中的某些布尔列绑定为文本,并且果然,表格按预期显示“true”或“false”。但是,我无法使复选框在任一方向绑定数据。我在下面列出了一些示例代码。JavaFX中的Issue binding复选框TableView
public class DataModel {
private SimpleBooleanProperty prop1;
private SimpleBooleanProperty prop2;
public boolean getProp1() {
return prop1.get();
}
public setProp1(boolean value) {
prop1.set(value);
}
public prop1() {
return prop1;
}
...
}
UI模型的逻辑:
...
private ObjectProperty<ObservableList<DataModel>> listProperty;
...
List<DataModel> list = new ArrayList<DataModel>();
... add some DataModel objects to list
final ObservableList<DataModel> obsList = FXCollections.observableArrayList(list);
listProperty.set(obsList);
UI逻辑:
...
TableView table = new TableView<DataModel>();
table.setEditable(true);
TableColumn<DataModel, String> boolAsStringCol = new TableColumn<DataModel, String>("Prop1");
boolAsStringCol.setCellValueFactory(new PropertyValueFactory<DataModel, String>("prop1"));
TableColumn<DataModel, Boolean> boolAsCbxCol = new TableColumn<DataModel, Boolean>("Prop2");
boolAsCbxCol.setCellValueFactory(new PropertyValueFactory<DataModel, Boolean>("prop2"));
boolAsCbxCol.setCellFactory(CheckBoxTableCell.forTableColumn(boolAsCbxCol));
boolAsCbxCol.setEditable(true);
table.getColumns().add(boolAsStringCol);
table.getColumns().add(boolAsCbxCol);
...
我可以切换复选框,但它似乎并没有被绑定属性的复选框。如果我设置了一个断点,当我选中或取消选中复选框时,setter不会被调用。另外,如果在创建对象时将属性初始化为true,则在呈现表时不会将其显示为已检查。
欢迎任何建议。看起来这应该起作用,但它没有。
谢谢。
我有完全相同的问题,这个代码应该在我看来,但它显然没有。你已经能够解决这个问题了吗? – bashoogzaad 2014-11-23 13:42:28