在我的TableView
中,当表格中没有可用的项目时,我使用按钮作为占位符。单击此按钮,我想添加一个新行,然后使该行中的第一个单元格可编辑。我能够成功添加新行,但是使第一个单元格可编辑不起作用。我已经尝试使用Platform.runLater开始编辑,但它也不起作用。下面是我正在尝试做的代码。任何帮助,将不胜感激。感谢
public class TableEditTest extends Application {
@Override
public void start(Stage primaryStage) {
TableColumn<Person, String> colA = new TableColumn<>("Name");
colA.setCellFactory(TextFieldTableCell.forTableColumn());
colA.setCellValueFactory(new PropertyValueFactory<>("name"));
TableColumn<Person, String> colB = new TableColumn<>("Age");
colB.setCellFactory(TextFieldTableCell.forTableColumn());
colB.setCellValueFactory(new PropertyValueFactory<>("age"));
TableColumn<Person, String> colC = new TableColumn<>("Gender");
colC.setCellValueFactory(new PropertyValueFactory<>("gender"));
colC.setCellFactory(TextFieldTableCell.forTableColumn());
TableView<Person> tableView = new TableView<>();
tableView.setEditable(true);
tableView.getColumns().addAll(colA, colB, colC);
Button btn = new Button();
btn.setText("Add Item");
btn.setOnAction((ActionEvent event) -> {
tableView.getItems().add(new Person());
// Edit the first cell
Platform.runLater(() -> {
tableView.edit(0, colA);
});
});
tableView.setPlaceholder(btn);
StackPane root = new StackPane();
root.getChildren().add(tableView);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}