簡體   English   中英

Vaadin Click Shortcut征收

[英]Vaadin Click Shortcut expropriation

我正面臨着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時,我在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);
            }
        });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM