JavaFXのテーブルビュー編集可能(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);が、それは動作しません。

どのように私は、テーブルの編集可能なの細胞を作ることができるか、クリップボードにセルから値をコピーするために働かを持っています。

ファビアン:

以下のためにTableCell編集可能であるためには、3つの条件が満たされる必要があります。

  1. 含有するTableView編集可能です
  2. 含有するTableColumn編集可能です
  3. セル自体は編集可能です

デフォルトで作成された細胞が、以来、あなたのケースでは第三の条件は、満たされていないcellFactory編集できません。あなたは割り当てる必要がcellFactory編集を行えるようにすることを。さらに、場合を除きことに注意してcellValueFactory、オブジェクトが実装戻りWritableValue、あなたも使用する必要があるonEditCommit項目にデータを格納するためのハンドラを:

colText.setCellFactory(TextFieldTableCell.forTableColumn());
colText.setOnEditCommit(evt -> evt.getRowValue().setText(evt.getNewValue()));

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=222726&siteId=1