Переназначить новый "символ" на клавишу, чтобы он печатался вместо буквы по умолчанию для клавиши
Я нахожусь в процессе разработки текстового редактора, который имеет "систему макросов", где пользователь может переназначать значения клавишам на своей клавиатуре, чтобы при нажатии буквы 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 есть раздел, посвященный обоим из этих подходов. См. "Функции текстовых компонентов" и "Использование привязок клавиш".