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 を使用してテキストを選択する方法について読んだことがありますが、それをコマンド + コマンドにバインドする方法がわかりません

  myTextfield.selectAll(); 

これを正しく実装する方法を知っている人はいますか?

4

1 に答える 1

4

の代わりに正しい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 マシンでは決して期待できません。

于 2012-09-14T11:00:18.587 に答える