2014-02-25 1 views
0

GWT로 Java Swing Mnemonics으로 만들고 싶습니다. 그러나 나는 그것을 알아내는 방법을 모른다. 나는 그것을 위해 봤지만 나는 그것에 대한 샘플 코드를 좋아하지 않았다. 내 단추에 일부 키보드 바로 가기 키를 바인딩하고 싶습니다. 그것을 어떻게 성취 할 수 있습니까? 모든 제안은 정말 감사하겠습니다!니모닉 in GWT

답변

1

일반적으로 NativePreviewHandler를 사용하여 글로벌 키보드 단축키를 처리 할 수 ​​있습니다. 이 예는 여기에서 볼 수 있습니다

NativePreviewHandler nativePreviewHandler = new NativePreviewHandler() { 

    @Override 
    public void onPreviewNativeEvent(NativePreviewEvent event) { 
     if (event.getTypeInt() != Event.ONKEYDOWN) { 
      return; 
     } 
     final NativeEvent nativeEvent = event.getNativeEvent(); 
     final boolean altKey = nativeEvent.getAltKey(); 
     final boolean ctrlKey = nativeEvent.getCtrlKey(); 
     if(altKey && ctrlKey && nativeEvent.getKeyCode() == 'A') { 
      // Do Something 
     } 
    } 
}; 
Event.addNativePreviewHandler(nativePreviewHandler); 

그러나 지금까지의 내가 klnow으로, 키보드 단축키뿐만 아니라 버튼/메뉴에 바인딩 작업의 어떤 종류를 처리하기 위해 GWT로 구축 더 일반적인 방법이 없습니다 . 그러한 추상화를 스스로 구현해야합니다.

1

이 코드가 도움이되기를 바랍니다. 여기에 document 요소에 키 다운 핸들러가 추가되었습니다.

RootPanel.get().addDomHandler(new KeyDownHandler() { 

     @Override 
     public void onKeyDown(KeyDownEvent event) { 
      if (event.isControlKeyDown()) { 
       char ch = (char) event.getNativeKeyCode(); 
       if (ch == 's' || ch == 'S') { 
        // do operation for Ctrl+S 
       } else if (ch == 'c' || ch == 'C') { 
        // do operation for Ctrl+C 
       } 
       // add more or use switch case 
      } 
     } 
    }, KeyDownEvent.getType()); 
+0

코드가 간단하고 매우 유용합니다. 감사. ** RootPanel **에서 keydown 이벤트를 묶는 것은 아주 좋은 아이디어입니다. 정말 고마워. – Cataclysm