1

我正在开发一个具有“宏系统”的文本编辑器,用户可以在其中重新为键盘上的键分配值——这样当他们按下字母 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;
}
}
}
});

我正在研究如何通过“创建”宏来实现它,检查是否存在宏。

如果您有更多建议,我将不胜感激。

谢谢你。

4

2 回答 2

3

我有一段时间没有进行任何 Swing 开发,但我认为您正在寻找KeyListener。这里有一个例子:http: //download.oracle.com/javase/tutorial/uiswing/events/keylistener.html

您的后端需要将键输入与宏映射并拦截键输入并插入宏。

于 2011-01-18T23:28:19.430 回答
2

如果您想更改文本窗格中显示的字符,那么您有两个选项(我能想到)

a) 重写在文本窗格中显示文本的代码 b) 在 Document 中插入一个不同的字符,以便绘制该字符

选项二是更简单的方法。

对于简单的一对一键映射,您可以只使用 DocumentFilter。

对于更复杂的键映射,例如使用 Ctrl+1,要输入特殊字符,您可以使用 KeyBindings。

Swing 教程包含这两种方法的部分。请参阅“文本组件功能”和“使用键绑定”。

于 2011-01-19T04:08:31.483 回答