Search code examples
javajavafxcontextmenu

Context Menu on a row of TableView?


I am using JavaFX and my application has a table and I can add elements to the table but I want to create a context menu that displays on a row when I right click on that row.

What I have...

In Scene Builder I have a method that runs on when the Context Menu is activated but that isn't exactly what I want. This would be fine really because I am programmatically grab the selected item from the table whenever I want. The issue, if I keep what I currently have, is getting the context menu to popup at the selected element.

contextMenu is the context menu with menu items. connectedUsers is the TableView

The following is the closest I can get, but this shows the context menu at the bottom of the TableView

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

Solution

  • try this..

    ContextMenu cm = new ContextMenu();
    MenuItem mi1 = new MenuItem("Menu 1");
    cm.getItems().add(mi1);
    MenuItem mi2 = new MenuItem("Menu 2");
    cm.getItems().add(mi2);
    
    table.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
    
        @Override
        public void handle(MouseEvent t) {
            if(t.getButton() == MouseButton.SECONDARY) {
                cm.show(table, t.getScreenX(), t.getScreenY());
            }
        }
    });