崑:
私はこのコードを持っています:
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
編集可能です - セル自体は編集可能です
デフォルトで作成された細胞が、以来、あなたのケースでは第三の条件は、満たされていないcellFactory
編集できません。あなたは割り当てる必要がcellFactory
編集を行えるようにすることを。さらに、場合を除きことに注意してcellValueFactory
、オブジェクトが実装戻りWritableValue
、あなたも使用する必要があるonEditCommit
項目にデータを格納するためのハンドラを:
colText.setCellFactory(TextFieldTableCell.forTableColumn());
colText.setOnEditCommit(evt -> evt.getRowValue().setText(evt.getNewValue()));