如何右键单击Javafx(fxml)中tableview中的单元格?

时间:2014-06-10 12:26:40

标签: javafx tableview fxml

我正在使用JavaFX和fxml编写表视图。我想在用户右键单击表格中的单元格时执行某些操作。我怎样才能做到这一点? 是否可以在单元格上创建右键菜单?

谢谢!

1 个答案:

答案 0 :(得分:6)

为感兴趣的表列实现单元工厂。在单元工厂中创建一个单元格,并在单元格中注册鼠标侦听器。

参考standard table example,您可以执行类似

的操作
firstNameCol.setCellFactory(new Callback<TableColumn<Person, String>, TableCell<Person, String>>() {
    @Override
    public TableCell<Person, String> call(TableColumn<Person, String> col) {
        final TableCell<Person, String> cell = new TableCell<>();
        cell.textProperty().bind(cell.itemProperty()); // in general might need to subclass TableCell and override updateItem(...) here
        cell.setOnMouseClicked(new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent event) {
                if (event.getButton == MouseButton.SECONDARY) {
                    // handle right click on cell...
                    // access cell data with cell.getItem();
                    // access row data with (Person)cell.getTableRow().getItem();
                }
            }
        });
        return cell ;
    }
});