我目前正在用Java构建计算器,并已开始实施 关键侦听器。它工作得很好,但是当我尝试输入脱字符号(^)时,它不会立即注册。您必须先按另一个键才能使其显示。插入(^)不立即注册。 Java关键字侦听器
我想这是因为它使用相同的行为,当您尝试在常规文本文档中键入插入符 。但是有什么办法可以解决这个问题吗?
如果有帮助,这是我的代码来处理的KeyEvents:
@Override
public void handle(KeyEvent ke) {
String key = ke.getCharacter();
if (key.matches("[0-9*/+-=.()^%]")) {
controller.getButton(key).fire();
}
}
编辑:找到一个解决办法。 Eli Sadoff提到的问题是我的脱字符号是我键盘上的一个死钥匙。由于我的插入符号结合是“移+¨”,我能解决这个问题是这样的:
@Override
public void handle(KeyEvent ke) {
String key = ke.getCharacter();
if (ke.isShiftDown() && ke.getCode() == KeyCode.DEAD_DIAERESIS) {
controller.getButton("^").fire();
}
else if (key.matches("[0-9*/+-=.()%]")) {
controller.getButton(key).fire();
}
}
偶然出现'+','(',')'和'%'这个问题吗? –
不,他们都不是。 – Javatar4ever
您的插入键是您计算机上的死锁吗? (意思是输入'^',然后'e'会产生'ê') –