Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 瓦丁点击快捷方式征用_Java_Spring_Vaadin_Vaadin8 - Fatal编程技术网

Java 瓦丁点击快捷方式征用

Java 瓦丁点击快捷方式征用,java,spring,vaadin,vaadin8,Java,Spring,Vaadin,Vaadin8,我正面临瓦丁8的问题。 请看我的简单示例代码: private Component shortcutTest() { TabSheet tabSheet = new TabSheet(); tabSheet.addTab( createButton( "button1", ShortcutAction.KeyCode.ENTER, Short

我正面临瓦丁8的问题。 请看我的简单示例代码:

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时,我会在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);
            }
        });