Как сопоставить ввод с клавиатуры в Java Swing с другим символом или строкой?

Я хочу перехватить клавишу или комбинацию клавиш (скажем, «b», Shift-b, Alt-b и Shift-Alt-b), которые вводятся с клавиатуры для приложения Java Swing. Я хочу сделать это для каждой клавиши на клавиатуре. После захвата ключа я хочу заменить его другим символом или строкой по своему выбору и отобразить заменяющий символ или строку в объекте JTextPane в том же месте в JTextPane, где был набран исходный символ.

Идея состоит в том, чтобы сопоставить клавиши обычной QWERTY-клавиатуры с символами другого алфавита и языка, например хинди.

Я могу легко перехватить клавиши QWERTY-клавиатуры, используя следующий вид кода:

JTextPane textPane = new JTextPane();
KeyStroke key = KeyStroke.getKeyStroke('b');

InputMap inputMap = textPane.getInputMap();
inputMap.put(key, DefaultEditorKit.forwardAction);

Однако для InputMap я могу заменить KeyStroke другим «действием», например DefaultEditorKit.forwardAction, а не другим символом или строкой. Мне не обязательно использовать InputMap - подойдет любой метод, позволяющий сопоставить ввод с клавиатуры с другим символом или строкой.

Спасибо, Сандип


person Sandeep    schedule 12.12.2015    source источник
comment
Перекрестно: coderanch.com/t/658968/ GUI / java / map-Keyboard-Entry-Java-Swing   -  person camickr    schedule 12.12.2015


Ответы (1)


Вы можете посмотреть DefaultKeyTypedAction из класса DefaultEditorKit, чтобы увидеть, как можно привязать свои ключи.

person Sharcoux    schedule 14.12.2015