переназначить новый «символ» на клавишу, чтобы он печатался вместо буквы по умолчанию клавиши - PullRequest
1 голос
/ 19 января 2011

Я нахожусь в процессе разработки текстового редактора, который имеет «систему макросов», в которой пользователь может переназначать значения клавишам на своей клавиатуре, чтобы при нажатии буквы 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 ]

3 голосов
/ 19 января 2011

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

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

2 голосов
/ 19 января 2011

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

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

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

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

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

В учебнике Swing есть раздел по обоим этим подходам.См. «Функции текстового компонента» и «Использование привязок клавиш».

...