如何在JavaFX(FXML)的TableView中右键单元格?

3

我正在使用JavaFX和fxml编写一个表格视图。当用户在表格的单元格上右击时,我想执行一些操作。我该如何做呢?

是否可以在单元格上创建右键菜单?

谢谢!

1个回答

6
实现一个单元格工厂用于感兴趣的表列。在单元格工厂中创建一个单元格,并向其中注册鼠标监听器。
参考标准表格示例,你可以这样做。
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 ;
    }
});

谢谢您的回答。这篇博客确实很有帮助,但是我该如何识别正确的点击呢? - Enayat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接