如何使用 Vaadin Flow Grid 示例左键单击以处理列可见性示例

How to get left click to work on column visibility example using the Vaadin Flow Grid example

https://vaadin.com/docs/latest/ds/components/grid/#column-visibility 的列可见性示例中,代码显示了一个 class ColumnToggleContextMenu,它不是 Vaadin API 的一部分,但它似乎以某种方式调整了如何该按钮已挂钩,因此可以左键单击而不是上下文菜单的默认右键单击。考虑到这一点,下面的代码只会在右键单击时显示上下文菜单,我无法让它像示例代码那样工作。我的代码是:

Button showHideColumnsButton = new Button("Show/Hide Columns");
showHideColumnsButton.addThemeVariants(ButtonVariant.LUMO_TERTIARY);

ContextMenu contextMenu = new ContextMenu(showHideColumnsButton);
for(Grid.Column column : grid.getColumns()) {
    contextMenu.addItem(getColumnName(column), e -> showHideColumn(column));
}

我正在考虑改用 MenuBar 看看是否可行,但如果可能的话,我更愿意弄清楚如何使用 Button,因为这似乎更合适(主要是因为它允许复选框显示列可见或隐藏)。

为了使上下文菜单在左键单击时打开,请使用 setOpenOnClick(true):

Button showHideColumnsButton = new Button("Show/Hide Columns");
showHideColumnsButton.addThemeVariants(ButtonVariant.LUMO_TERTIARY);

ContextMenu contextMenu = new ContextMenu(showHideColumnsButton);
contextMenu.setOpenOnClick(true)
for(Grid.Column column : grid.getColumns()) {
    contextMenu.addItem(getColumnName(column), e -> showHideColumn(column));
}