我正在开发一个具有“宏系统”的文本编辑器,用户可以将值重新分配给键盘上的键 - 这样当他们按下字母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;
}
}
}
});
我正在研究如何通过“创建”宏来实现它,检查宏是否存在。
如果您有任何建议,我将不胜感激。
谢谢。
答案 0 :(得分:3)
我有一段时间没有做任何Swing开发,但我认为你正在寻找KeyListener。 这里有一个例子:http://download.oracle.com/javase/tutorial/uiswing/events/keylistener.html
您的后端需要使用宏映射键输入并截取键输入并插入宏。
答案 1 :(得分:2)
如果您想更改文本窗格中显示的字符,那么您有两个选项(我能想到)
a)重写显示文本窗格中文本的代码 b)在文档中插入一个不同的字符,以便字符被绘制
选项二是更容易的方法。
对于简单的一对一键映射,您只需使用DocumentFilter。
对于更复杂的键映射,例如使用Ctrl + 1,输入一个特殊字符,然后使用KeyBindings。
Swing tutorial有关于这两种方法的部分。请参阅“文本组件功能”和“使用键绑定”。