java - Vaadin 点击快捷方式征用

标签 java spring vaadin vaadin8

我在使用 Vaadin 8 时遇到了 ClickShortcut 问题。 请看我的简单示例代码:

private Component shortcutTest()
{
    TabSheet tabSheet = new TabSheet();
    tabSheet.addTab( createButton( "button1", 
                                  ShortcutAction.KeyCode.ENTER, 
                                  ShortcutAction.ModifierKey.CTRL ),
                                  "Tab1" );
    tabSheet.addTab( createButton( "button2", 
                                  ShortcutAction.KeyCode.ENTER, 
                                  ShortcutAction.ModifierKey.CTRL ), 
                                  "Tab2" );
    return tabSheet;
}

private Component createButton(String name, int keyCode, int modifier)
{
    Button button = new Button( name );
    button.setClickShortcut( keyCode, modifier );
    button.addClickListener( event -> System.out.println( event.getButton().getCaption() + " - click!" ) );
    return button;
}

选择选项卡时 tab1 im在 ctrl+enter 操作上获得预期输出,但是当我选择 tab2 时,什么都没有发生。

我该如何处理?我想在不同的选项卡中为不同的按钮使用相同的快捷方式,但似乎我只能为一种快捷方式组合使用一个按钮。

最佳答案

是的,查看框架代码后发现,同一个快捷方式似乎每个窗口只能使用一次(如果没有窗口,则整个 UI)。

一种解决方法是在所选选项卡更改时动态设置和清除快捷方式,例如

tabSheet.addSelectedTabChangeListener(
        (TabSheet.SelectedTabChangeListener) event -> {
            if (tabsheet.getSelectedTab().equals(tab1)) {
                button2.removeClickShortcut();
                button1.setClickShortcut(keyCode, modifier);
            } else {
                button1.removeClickShortcut();
                button2.setClickShortcut(keyCode, modifier);
            }
        });

关于java - Vaadin 点击快捷方式征用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47475329/

相关文章:

java - 在 Java 中使用命令行编译和运行多个包

java - 我的 Chrome 浏览器中的网页有重定向循环

java - 仅在特定情况下保留 Vaadin 中的 View 状态

gwt - vaadin gwt编译器错误未知参数:-war

java - Eclipse:找不到 javax.xml.datatype.XMLGregorianCalendar - Java 11

java - 通过持久性连接到mssql而不复制dll

java - Spring + REST 的 Pretty-Print 参数

java - JSF + Spring MVC 集成一切正常但抛出异常

vaadin - 在 Vaadin 中保留选项卡式信息

java - Eclipse中如何通过id找到添加到toolbar的控件?