2011-06-21 21 views
0

私のコードは次のようである:私はCTRL + ENTER組み合わせをリッスンする必要がTextAreaで2つのキーの組み合わせをどのように聞くことができますか?

final TextArea textArea = new TextArea(); 
textArea.addKeyDownHandler(new KeyDownHandler() { 
    @Override 
    public void onKeyDown(KeyDownEvent event) { 
     if (event.getNativeKeyCode() == KeyCodes.KEY_CTRL) { 
      textArea.addKeyDownHandler(new KeyDownHandler() { 
      public void onKeyDown(KeyDownEvent event) { 
      if (event.getNativeKeyCode() == KeyCodes.KEY_ENTER) { 
       foo(); 
      } 
     } 
    }); 
    } 
    } 
}); 

、 問題がfoo()である私がENTERを押すと呼んでいます。

ありがとうございます!

答えて

2

あなたが与えられたイベントは、そのisControlKeyDownを呼び出すことによって発生したときにCtrlキーが押されたかどうかを確認することができます。

public void onKeyDown(KeyDownEvent event) { 
    if (event.isControlKeyDown()) { 
     if (event.getNativeKeyCode() == KeyCodes.KEY_ENTER) { 
      //do something here 
     } 
     } 
    } 
-1

あなたは、コントロールキー、Altキー、およびメタのようなものを確認することができます。

public void keyPressed(KeyEvent e) { 
    int modifiers = e.getModifiersEx(); 
    String tmpString = KeyEvent.getModifiersExText(modifiers); 
    final int keyCode = e.getKeyCode(); 
    int id = e.getID(); 
    char c = 0; 
    if (id == KeyEvent.KEY_TYPED) 
     c = e.getKeyChar(); 
    if (!e.isAltDown() && !e.isControlDown() && !e.isMetaDown()) 
     normalKey(keyCode); 
    else if (!e.isAltDown() && e.isControlDown() && !e.isMetaDown()) 
     controlKey(keyCode, e.isShiftDown()); 
    else 
     log.info("keycode not processed: " + e.getKeyCode() + ' ' + id + ' ' + c + ' ' + tmpString + ' ' + e.isAltDown() + ' ' + e.isControlDown() + ' ' 
       + e.isShiftDown() + ' ' + e.isMetaDown()); 
    lastKeyCode=keyCode; 
} 
+0

質問はAWTではなくGWTについてです。 –

+0

oops。試してみてください:http://google-web-toolkit.googlecode.com/svn/javadoc/1.4/com/google/gwt/user/client/ui/KeyboardListener.html#onKeyDown%28com.google.gwt.user.client。 ui.Widget、%20char、%20int%29 –

関連する問題