我正在开发一个支持阿拉伯语文本的应用程序。我没有使用系统级语言。用户只需按下键,然后根据该键,将在JTextArea中插入阿拉伯语unicode。我创建了一个类ArabicTextArea并使用Swing的JTextArea扩展它。我在这个类中包含了一个重写函数processKeyEvent(KeyEvent e)。现在我的问题是,每当我按下某个键时,此功能会触发3次,可能是KeyDown的第1次,KeyUp的第2次和KeyPressed的第3次。我希望这个函数只触发一次,但我不知道怎么做。请有人帮帮我......
我正在使用以下代码
@Override
protected void processKeyEvent(KeyEvent event) {
switch (event.getKeyChar()) {
case 'a':
append("\u0627");
break;
case 'H':
append("\u062D");
break;
case 'm':
append("\u0645");
break;
case 'd':
append("\u062F");
break;
default:
super.processKeyEvent(event);
}
}
答案 0 :(得分:1)
是的,它被多次调用,因为发生了3个事件(例如'a'):
以上代码仅通过KeyChar进行区分。使用
event.getID() == KeyEvent.KEY_TYPED
忽略按下和释放事件,因为您只关心用户是否输入了字符。