您好,我正在尝试在应用程序中添加全选,剪切,复制和粘贴命令,我设法得出了剪切,复制和粘贴命令,但是我似乎还没弄清楚如何添加cmd-命令...

这适用于我的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();


任何人都知道如何正确执行此操作吗?

最佳答案

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

您可以通过调查String来发现这些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 + A会全选(这是预期的),但是我绝对不会在Windows / Linux机器上选择

07-24 09:46
查看更多