猿问

JavaFX TableView editable(true) 不工作

我有这段代码:


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);,但它不起作用。


如何使表的单元格可编辑或可以将单元格中的值复制到剪贴板。


慕无忌1623718
浏览 105回答 1
1回答

守着一只汪

要使 aTableCell可编辑,需要满足 3 个条件:包含TableView是可编辑的包含TableColumn是可编辑的单元格本身是可编辑的在您的情况下,不满足第三个条件,因为默认创建的单元格cellFactory不可编辑。您需要分配一个cellFactory允许编辑的。此外请注意,除非cellValueFactory返回一个对象实现WritableValue,否则您还需要使用onEditCommit处理程序将数据存储在项目中:colText.setCellFactory(TextFieldTableCell.forTableColumn()); colText.setOnEditCommit(evt&nbsp;->&nbsp;evt.getRowValue().setText(evt.getNewValue()));
随时随地看视频慕课网APP

相关分类

Java
我要回答