2017-11-24 6 views
1

は私がVaadin 8でClickShortcutの問題に直面してい収用クリック 私の簡単なコード例を見てください:タブが選択された場合はVaadinショートカットが

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; 
} 

Imが予想なっTab1をCtrlキー上の出力は、+入力しますアクションが選択された場合、Tab2 - 何も起こりません。

どうすれば対応できますか?私は別のタブの異なるボタンの同じショートカットをしたいと思いますが、私は1つのショートカットの組み合わせに対して1つのボタンしか持てないようです。

答えて

3

はい、同じショートカットのように見えるフレームワークコードを調べることは、ウィンドウごとに1回(またはウィンドウがない場合はUI全体)のみ使用できます。

つの回避策は、動的に設定することやショートカットをクリアすることができたときに、選択したタブの変更、

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