首页 > 解决方案 > 如何使用 Vaadin Flow Grid 示例左键单击以处理列可见性示例

问题描述

https://vaadin.com/docs/latest/ds/components/grid/#column-visibility上的列可见性示例中,代码显示了一个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 因为这似乎更合适(主要是因为它允许复选框显示列是可见还是隐藏)。

标签: vaadinvaadin-flowvaadin14

解决方案


为了使上下文菜单在左键单击时打开,请使用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));
}

推荐阅读