【问题标题】:How to add command+a on a JTextfield?如何在 JTextfield 上添加命令+a?
【发布时间】:2012-09-14 10:37:14
【问题描述】:

您好,我正在尝试在我的应用程序中添加全选、剪切、复制和粘贴命令,我设法计算出剪切、复制和粘贴命令,但我似乎不知道如何添加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来选择文本的东西,但是我不知道如何将它绑定到命令+命令

  myTextfield.selectAll(); 

有人知道如何正确实现这一点吗?

【问题讨论】:

    标签: java swing jtextfield key-bindings keystroke


    【解决方案1】:

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

    您可以通过调查InputMap 来发现这些Strings,例如使用:

      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 机器上这样做

    【讨论】:

    • 谢谢!我会牢记这一点,并将那个 sn-p 放在我的 Misc.java 中,所以我可以更频繁地使用它:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    • 2015-01-30
    • 1970-01-01
    • 2012-06-30
    • 2013-05-13
    相关资源
    最近更新 更多