Переназначить новый "символ" на клавишу, чтобы он печатался вместо буквы по умолчанию для клавиши

Я нахожусь в процессе разработки текстового редактора, который имеет "систему макросов", где пользователь может переназначать значения клавишам на своей клавиатуре, чтобы при нажатии буквы a он мог печатать букву "z" вместо. (Действительно, он будет использоваться для математических символов, а не для других букв).

Кто-нибудь может заставить меня начать на Java-коде переназначить значение для ключа в JTextPane?

Если вам нужно больше деталей, дайте мне знать.

Спасибо!


Пока что вот что у меня есть:

public void keyPressed(KeyEvent evt) {
//Called when a key is pressed.

//Intercept the key before the default value is printed.
//1. Suppress the original character. Do this in the KeyEvent object
//by setting the doit property to false in your listener if the key
//matches a macro.

    jTextPane1.addKeyListener(new KeyAdapter() {
public void keyPressed(keyEvent event) {
if (event.getKeyCode() == KeyEvent.VK_A) {
//Perform an action when A is pressed and there is a macro.
if(macroA == true)
{
    keyPressed.doit() = false;
}
}
}
else if (event.getKeyCode() == KeyEvent.VK_B) {
//Perform an action when B is pressed if there is a macro.
if(macroB == true)
{
    keyPressed.doit() = false;
}
}
}
});

Я работаю над тем, как реализовать его с помощью "создания" макроса, проверяя, существует ли макрос.

Если у вас есть еще советы, я был бы признателен.

Спасибо.

2 ответа

Я давно не занимался разработкой Swing, но думаю, что вы ищете KeyListener. Вот пример: http://download.oracle.com/javase/tutorial/uiswing/events/keylistener.html

Ваш сервер должен сопоставить ключевые вводы с вашими макросами, перехватить ввод ключа и вставить вместо этого макрос.

Если вы хотите изменить символ, отображаемый в текстовой панели, тогда у вас есть два варианта (которые я могу придумать)

а) переписать код, который отображает текст в текстовой панели б) вставить другой символ в документ, чтобы этот символ был окрашен

Вариант второй - более простой подход.

Для простых однозначных сопоставлений клавиш вы можете просто использовать DocumentFilter.

Для более сложных сопоставлений клавиш, таких как использование Ctrl+1, для ввода специального символа вы должны использовать привязки клавиш.

В учебнике по Swing есть раздел, посвященный обоим из этих подходов. См. "Функции текстовых компонентов" и "Использование привязок клавиш".

Другие вопросы по тегам