java - 一行 TableView 上的上下文菜单?

标签 java javafx contextmenu

我正在使用 JavaFX,我的应用程序有一个表,我可以向该表添加元素,但我想创建一个上下文菜单,当我右键单击该行时,它会显示在该行上。

我有什么...

在 Scene Builder 中,我有一个在激活上下文菜单时运行的方法,但这并不是我想要的。这真的很好,因为我可以随时以编程方式从表中获取所选项目。如果我保留当前拥有的内容,问题是让上下文菜单在所选元素处弹出。

contextMenu 是带有菜单项的上下文菜单。 connectedUsers 是 TableView

以下是我能得到的最接近的,但这显示了 TableView 底部的上下文菜单

contextMenu.show(connectedUsers, Side.BOTTOM, 0, 0);

最佳答案

我相信最好的解决方案是在 here 中讨论的.

table.setRowFactory(
    new Callback<TableView<Person>, TableRow<Person>>() {
        @Override
        public TableRow<Person> call(TableView<Person> tableView) {
            final TableRow<Person> row = new TableRow<>();
            final ContextMenu rowMenu = new ContextMenu();
            MenuItem editItem = new MenuItem("Edit");
            editItem.setOnAction(...);
            MenuItem removeItem = new MenuItem("Delete");
            removeItem.setOnAction(new EventHandler<ActionEvent>() {
        
                @Override
                public void handle(ActionEvent event) {
                    table.getItems().remove(row.getItem());
                }
            });
            rowMenu.getItems().addAll(editItem, removeItem);
            
            // only display context menu for non-empty rows:
            row.contextMenuProperty().bind(
              Bindings.when(row.emptyProperty())
              .then((ContextMenu) null)
              .otherwise(rowMenu);
            return row;
    }
});

关于java - 一行 TableView 上的上下文菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21009377/

相关文章:

java - openshift mysql 连接 NumberFormatException 与 Tomcat 7 (JBoss EWS 2.0)

java - 下载缩略图而不是整个图像

java - 用于包装 HTML 和 JavaScript/CSS 的独立应用程序

canvas - 如何以不锯齿的方式绘制由多条线段组成的曲线

WPF - 如果命令的 CanExecute 为 false,如何隐藏菜单项?

java - 如何比较原始类类型?喜欢 Integer 和 Void?

java - 为什么它不交出我的东西?

java - 按ESC退出全屏模式后如何在javafx中返回全屏?

wpf - 在 Xaml 中将 TreeView 与 ContextMenu 绑定(bind)

android - 如何从 ListView 获取数据到上下文菜单?