我正在使用带有可疑主体的WebView作为JavaFX中的富文本编辑器。它工作正常,但我需要听按键。它适用于输入键和ASCII字符,但重音字符(如冰岛á和é)不会触发任何事件。我尝试了KeyEvent.KEY_PRESSED和KeyEvent.KEY_TYPED,它们都没有触发重音字符。
InputMethodEvent会为重音字符触发,但是如果我为此设置了一个侦听器,它似乎会自动使用该事件并且它无法进入编辑器。
任何人都知道在输入重音字符时不会消耗它们或者在InputMethodEvent中消耗角色的方法来监听事件的方法吗?
答案 0 :(得分:1)
您可以使用Node.addEventHandler方法将KeyEvent EventHandler添加到任何节点(在本例中为WebView),如果您处理EventType KeyEvent.KEY_TYPED ,则可以输入<使用KeyEvent.getCharacter方法的strong> 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”,可能会有用。相等。
祝你好运!