如何右键单击网格中选择行并同时显示上下文菜单?

问题描述 投票:0回答:2

使用 Vaadin 24:

我尝试使用 GridContextMenu

grid.addContextMenu()
,它通过右键单击打开,但是它不会选择我单击的行,并且我在 GridContextMenu 实例上找不到要设置的此类选项。

其次,我尝试添加单击侦听器并检查鼠标按钮,但是我不知道如何获取我单击的行索引:

grid.addItemClickListener(event -> {
    val column = event.getColumn(); // can get only column
    val buttonCode = event.getButton();
    if (buttonCode == 2) { // 2 is secondary button / right button
        // select here
    }
});

请记住,网格列是可排序的 -

setSortable(true)
和可重新排序的 -
setColumnReorderingAllowed(true)
。请帮忙,谢谢。

java grid vaadin vaadin-flow
2个回答
0
投票

如果添加 GridContextMenu,您可以注册一个侦听器:

addGridContextMenuOpenedListener( new ComponentEventListener<GridContextMenu.GridContextMenuOpenedEvent<Object>>(){
    @Override
    public void onComponentEvent(GridContextMenuOpenedEvent<Object> event) {
        if (event.getItem().isPresent()) {
            Grid<Object> grid = ((Grid<Object>) getTarget());
            grid.select( event.getItem().get() );
        }
    }
} );

0
投票

尝试使用 GridContextMenu 中的 addGridContextMenuOpenedListener 。

final var menu = grid.addContextMenu();
menu.addGridContextMenuOpenedListener(event -> event.getItem().ifPresent(grid::select));
© www.soinside.com 2019 - 2024. All rights reserved.