Как добавить горячие клавиши в JTextField?

Я застрял на каком-то шаге и не могу добавить в свою программу комбинацию клавиш, например: CTRL+SPACE, я ищу одну неделю и не могу найти любые ответы.


person Azad    schedule 20.12.2012    source источник
comment
Прочтите о привязках клавиш: docs.oracle.com/javase/tutorial/uiswing /misc/keybinding.html   -  person Branislav Lazic    schedule 21.12.2012


Ответы (1)


Рекомендуем ознакомиться с учебником по Java, чтобы получить хороший обзор привязок клавиш.

Вот краткий пример:

import java.awt.event.*;
import javax.swing.*;

public class KeyBindings extends Box{
    public KeyBindings(){
        super(BoxLayout.Y_AXIS);
        final JTextPane textArea = new JTextPane();
        textArea.insertComponent(new JLabel("Text"));
        add(textArea);

        Action action = new AbstractAction() {
            @Override
            public void actionPerformed(ActionEvent e) {
                textArea.setText("New Text");
            }};
         String keyStrokeAndKey = "control SPACE";
         KeyStroke keyStroke = KeyStroke.getKeyStroke(keyStrokeAndKey);
         textArea.getInputMap().put(keyStroke, keyStrokeAndKey);
         textArea.getActionMap().put(keyStrokeAndKey, action);
    }


    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setContentPane(new KeyBindings());
        frame.pack();
        frame.setVisible(true);
    }
}
person Nick Rippe    schedule 20.12.2012
comment
Угадай, что ! Это было сработано. Спасибо за совет и спасибо за решение, это то же самое для JTextField, и я буду искать keyBindings. - person Azad; 21.12.2012