2012-09-14 49 views
1

你好我試圖添加選擇所有,剪切,複製和粘貼命令在我的應用程序,我設法解決剪切,複製和粘貼命令,但我似乎並沒有想出如何添加CMD - 一個命令如何在JTextfield上添加命令+ a?

這個工作對我CMD - X命令

text.getInputMap(JComponent.WHEN_FOCUSED).put(KeyStroke.getKeyStroke(KeyEvent.VK_X, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()), "cut"); 

但是當我嘗試一下本作CMD - 一個

text.getInputMap(JComponent.WHEN_FOCUSED).put(KeyStroke.getKeyStroke(KeyEvent.VK_A, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()), "select"); 

它似乎並沒有工作...

我看了一些關於利用這個空間來選擇文本,但我不知道如何將其綁定到命令+ a命令

myTextfield.selectAll(); 

任何人都知道如何正確實現這個?

回答

4

使用正確的String"select-all"而不是​​。

您可以通過使用發現這些String S按調查InputMap,例如:

public static void main(String[] args) { 
    EventQueue.invokeLater(new Runnable() { 
     @Override 
     public void run() { 
     JTextField textField = new JTextField(); 
     InputMap inputMap = textField.getInputMap(JComponent.WHEN_FOCUSED); 
     KeyStroke[] keyStrokes = inputMap.allKeys(); 
     for (int i = 0; i < keyStrokes.length; i++) { 
      KeyStroke keyStroke = keyStrokes[ i ]; 
      Object value = inputMap.get(keyStroke); 
      System.out.println(keyStroke + "-\"" + value + "\""); 
     } 
     } 
    }); 
    } 

它打印出來(這裏沒有粘貼完整的輸出)

ctrl pressed BACK_SPACE-"delete-previous-word" 
ctrl pressed A-"select-all" 
shift pressed KP_RIGHT-"selection-forward" 

這說明你String正在尋找的是"select-all"

注意,這可能是真正的反直觀的用戶切換CTRL鍵的功能和CMD關鍵。例如在Mac上CMD + 一個默認情況下不會選擇所有(預期),但我絕不會想到,在Windows/Linux機器

+0

謝謝你!我記住它,並且把這個片段放在我的Misc.java中,所以我可以更頻繁地使用它:) – Nicholas