1

您好我正在尝试在我的应用程序中添加全选、剪切、复制和粘贴命令,我设法计算出剪切、复制和粘贴命令,但我似乎不知道如何添加cmd-a命令...

这适用于我的cmd-x命令

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

但是当我尝试这个时cmd- a

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

它似乎不起作用...

我读过一些关于使用这个 void 来选择文本的内容,但我不知道如何将它绑定到 command+a 命令

  myTextfield.selectAll(); 

任何人都知道如何正确实现这一点?

4

1 回答 1

4

使用正确的String:"select-all"而不是"select".

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请注意,用户切换key 和key的功能可能真的违反直觉cmd。例如,在 Mac 上cmd+A默认情况下会选择全部(这是预期的),但我永远不会期望在 Windows/Linux 机器上

于 2012-09-14T11:00:18.587 回答