2017-11-24 3 views
1

내가 만약 angel 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; 
} 

임은 기대하기 TAB1 Ctrl 키에 대한 출력은 + 입력 작업을 선택했지만 Tab2 - 아무 일도 발생하지 않습니다.

어떻게 처리 할 수 ​​있습니까? 다른 탭의 다른 버튼에 대해 동일한 바로 가기를 갖고 싶습니다. 그러나 하나의 바로 가기 조합에 대해 하나의 버튼 만 가질 수있는 것처럼 보입니다.

답변

3

예, 동일한 단축키처럼 보이는 프레임 워크 코드를 살펴보면 창당 한 번 (또는 창이없는 경우 전체 UI)에만 사용할 수 있습니다.

한 가지 해결 방법은 동적으로 설정하고 바로 가기를 취소 할 수 때마다 선택된 탭 변경,

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