我有这段代码:public static void main(String[] ar){ launch(ar); }@Overridepublic void start(Stage primaryStage){ TableView<Foo> tableView = new TableView<>(); tableView.setColumnResizePolicy(TableView.UNCONSTRAINED_RESIZE_POLICY); tableView.setPlaceholder(new Label("No data")); tableView.setEditable(true); TableColumn<Foo, String> colText = new TableColumn<>("Text"); colText.setCellValueFactory(new PropertyValueFactory<>("text")); tableView.getColumns().add(colText); List<Foo> listFoo = new ArrayList<>(Arrays.asList(new Foo("1"), new Foo("2"), new Foo("3"))); tableView.setItems(FXCollections.observableArrayList(listFoo)); primaryStage.setScene(new Scene(tableView)); primaryStage.show();}public class Foo{ private String text; public Foo(String txt){ text = txt; } public String getText(){ return text; } public void setText(String text){ this.text = text; }}我尝试使表格的单元格可编辑:tableView.setEditable(true);,但它不起作用。如何使表的单元格可编辑或可以将单元格中的值复制到剪贴板。
1 回答
守着一只汪
TA贡献1872条经验 获得超3个赞
要使 aTableCell
可编辑,需要满足 3 个条件:
包含
TableView
是可编辑的包含
TableColumn
是可编辑的单元格本身是可编辑的
在您的情况下,不满足第三个条件,因为默认创建的单元格cellFactory
不可编辑。您需要分配一个cellFactory
允许编辑的。此外请注意,除非cellValueFactory
返回一个对象实现WritableValue
,否则您还需要使用onEditCommit
处理程序将数据存储在项目中:
colText.setCellFactory(TextFieldTableCell.forTableColumn()); colText.setOnEditCommit(evt -> evt.getRowValue().setText(evt.getNewValue()));
添加回答
举报
0/150
提交
取消