簡體   English   中英

JavaFX TableView可編輯(true)不起作用

[英]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個條件:

  1. 包含TableView是可編輯的
  2. 包含TableColumn是可編輯的
  3. 細胞本身是可編輯的

在您的情況下,第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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM