[英]JavaFX KeyEvent and accented characters
我正在使用带有可疑主体的WebView作为JavaFX中的富文本编辑器。 它工作正常,但我需要听按键。 它适用于输入键和ASCII字符,但重音字符(如冰岛á和é)不会触发任何事件。 我尝试了KeyEvent.KEY_PRESSED和KeyEvent.KEY_TYPED,它们都没有触发重音字符。
InputMethodEvent会为重音字符触发,但是如果我为它设置了一个监听器,它似乎会自动使用该事件并且它不会到达编辑器。
任何人都知道一种方法来监听事件,当重音字符被输入不消耗它们或在InputMethodEvent中消耗角色的方式?
您可以使用Node.addEventHandler方法将KeyEvent EventHandler添加到任何节点(在本例中为WebView),如果处理EventType KeyEvent.KEY_TYPED ,则可以使用KeyEvent.getCharacter方法获取类型化的unicode字符。 看这个例子:
WebView myWebView = new WebView();
myWebView.addEventHandler(KeyEvent.KEY_TYPED,
new EventHandler<KeyEvent>()
{
@Override
public void handle(KeyEvent event)
{
System.out.println("Unicode character typed: "+event.getCharacter());
switch (event.getCharacter())
{
case "á":
System.out.println("Typed accented a");
break;
case "é":
System.out.println("Typed accented e");
break;
case "í":
System.out.println("Typed accented i");
break;
case "ó":
System.out.println("Typed accented o");
break;
case "ú":
System.out.println("Typed accented u");
break;
default:
System.out.println("Typed other key " + event.getCode());
break;
}
}
});
如果要比较忽略区域设置,大写,小写等的不同字符串,您可能需要查看Collator类。如果要考虑“á”和“a”相等,可能会有用。
祝好运!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.