如何将上下文菜单添加到空表格视图的标题行?

Jos*_*uaD 3 javafx javafx-8

我有一个TableView。如果它有列,我可以向列添加上下文菜单,当我右键单击列标题时会出现该菜单。

如何将上下文菜单添加到空表出现的空白栏中?截屏:

在此输入图像描述

Ada*_*dam 5

这可以通过直接访问 TableView 的内部结构来完成,我不知道有任何官方 API 可以做到这一点。

官方的 TableView CSS命名了一个类,column-header-background然后我们可以通过Node#lookup()方法访问该类。

一个例子

public class ContextMenuOnTableHeader extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) throws Exception {
        TableView<String> table = new TableView<>();
        Scene scene = new Scene(table);
        primaryStage.setScene(scene);
        primaryStage.setWidth(200);
        primaryStage.setHeight(200);

        primaryStage.show();

        Node header = table.lookup(".column-header-background");
        header.setOnContextMenuRequested(event -> {
            ContextMenu menu = new ContextMenu();
            menu.getItems().add(new MenuItem("Mr Horse"));
            menu.show(header, event.getScreenX(), event.getScreenY());
        });
    }

}
Run Code Online (Sandbox Code Playgroud)