2011-06-21 65 views
0

我的代碼是這樣的:如何在TextArea中偵聽兩個鍵的代碼組合?

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

我需要監聽CTRL + ENTER組合, 問題是,當我按下ENTERfoo()呼籲。

謝謝!

回答

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

問題是關於GWT,而不是AWT。 –

+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% –

相關問題