[英]JavaFX TableView editable(true) don't work
我有這個代碼:
public static void main(String[] ar){ launch(ar); }
@Override
public 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);
,但它不起作用。
如何使表格的單元格可編輯或具有將值從單元格復制到剪貼板的可能性。
要使TableCell
可編輯,需要滿足3個條件:
TableView
是可編輯的 TableColumn
是可編輯的 在您的情況下,第3個條件未滿足,因為默認cellFactory
創建的單元格不可編輯。 您需要分配允許編輯的cellFactory
。 此外請注意,除非cellValueFactory
返回實現WritableValue
的對象,否則還需要使用onEditCommit
處理程序將數據存儲在項中:
colText.setCellFactory(TextFieldTableCell.forTableColumn());
colText.setOnEditCommit(evt -> evt.getRowValue().setText(evt.getNewValue()));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.