如何在JavaFX中填充包含复选框的tableview
我创建了一个如何在JavaFX中填充包含复选框的tableview,javafx,tableview,Javafx,Tableview,我创建了一个TableView,我用一个observeList填充了它, 我的表的某些列是复选框,我想要的是复选框与我创建的模型对象绑定。 到目前为止,我得到的结果是: 如果是文本,我可以看到结果,但如果是复选框则始终未选中表格视图中的复选框示例: 表中显示的项目:成员 public class Member { private StringProperty myName; private BooleanProperty myCheck; public Member(S
TableView
,我用一个observeList
填充了它,
我的表的某些列是复选框
,我想要的是复选框
与我创建的模型对象绑定。
到目前为止,我得到的结果是:
如果是文本,我可以看到结果,但如果是
复选框
则始终未选中表格视图中的复选框示例:
public class Member {
private StringProperty myName;
private BooleanProperty myCheck;
public Member(String name, boolean checked) {
myName = new SimpleStringProperty(name);
myCheck = new SimpleBooleanProperty(checked);
}
public StringProperty nameProperty() { return myName; }
public BooleanProperty checkProperty() { return myCheck; }
}
observeList members=FXCollections.observearraylist();
成员。添加(新成员(“peter”,true));
成员。添加(新成员(“gernot”,true));
成员。添加(新成员(“fritz”,假));
对于(inti=1000;i<2000;i++)成员,添加(新成员(“N”+i,(i%5==0));
TableView table=新TableView();
table.prefHeightProperty().bind(box.heightProperty());
表.集合项目(成员);
TableColumn c1=新的TableColumn(“名称”);
c1.setCellValueFactory(新属性ValueFactory(“名称”);
table.getColumns().add(c1);
TableColumn c2=新的TableColumn(“成员”);
c2.setCellValueFactory(新属性ValueFactory(“检查”));
c2.setCellFactory(列->新建CheckBoxTableCell());
table.getColumns().add(c2);
pane.getChildren().addAll(表);
请展示一些代码。有一个。非常感谢,它很有效,但我想知道SimpleStringProperty和StringProperty之间的区别是什么。我尝试过它们,我认为SimpleStringProperty允许我修改数据,但有了StringProperty,我无法做到这一点。如果我说的是真的,那么我真正想要的是向用户展示他所做的,同时允许他更改它,如果他想
StringProperty
是一个抽象类SimpleStringProperty
是一个完整的实现。那么如何使用SimpleStringProperty来产生相同的效果呢?
ObservableList<Member> members = FXCollections.observableArrayList();
members.add(new Member("peter", true));
members.add(new Member("gernot", true));
members.add(new Member("fritz", false));
for (int i = 1000; i < 2000; i++) members.add(new Member("N"+i, (i%5==0)));
TableView<Member> table = new TableView<Member>();
table.prefHeightProperty().bind(box.heightProperty());
table.setItems(members);
TableColumn<Member,String> c1 = new TableColumn<Member,String>("Name");
c1.setCellValueFactory(new PropertyValueFactory<Member,String>("name"));
table.getColumns().add(c1);
TableColumn<Member,Boolean> c2 = new TableColumn<Member,Boolean>("Membership");
c2.setCellValueFactory(new PropertyValueFactory<Member,Boolean>("check"));
c2.setCellFactory(column -> new CheckBoxTableCell());
table.getColumns().add(c2);
pane.getChildren().addAll(table);