JavaFX KeyEvent和重音字符

时间:2013-02-20 16:20:27

标签: java javafx-2 javafx

我正在使用带有可疑主体的WebView作为JavaFX中的富文本编辑器。它工作正常,但我需要听按键。它适用于输入键和ASCII字符,但重音字符(如冰岛á和é)不会触发任何事件。我尝试了KeyEvent.KEY_PRESSED和KeyEvent.KEY_TYPED,它们都没有触发重音字符。

InputMethodEvent会为重音字符触发,但是如果我为此设置了一个侦听器,它似乎会自动使用该事件并且它无法进入编辑器。

任何人都知道在输入重音字符时不会消耗它们或者在InputMethodEvent中消耗角色的方法来监听事件的方法吗?

1 个答案:

答案 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”,可能会有用。相等。

祝你好运!