代码之家  ›  专栏  ›  技术社区  ›  Dawid Fieluba

瓦丁点击快捷方式征用

  •  1
  • Dawid Fieluba  · 技术社区  · 7 年前

    我在瓦丁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;
    }
    

    选择选项卡时 表1 我在上获得预期输出 Ctrl+Enter 动作,但当我选择 表2 -什么都没发生。

    1 回复  |  直到 7 年前
        1
  •  3
  •   Péter Török    7 年前

    是的,从框架代码来看,每个窗口(如果没有窗口,则整个UI)只能使用一次相同的快捷方式。

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

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