JavaFX 8单击占位符按钮编辑表格单元格

时间:2015-01-22 20:00:08

标签: javafx javafx-8

在我的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);
    }
}

0 个答案:

没有答案