我在使用 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/