繁体   English   中英

JavaFX KeyEvent和重音字符

[英]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;
                            }
                        }

                    });

如果要比较忽略区域设置,大写,小写等的不同字符串,您可能需要查看Collat​​or类。如果要考虑“á”和“a”相等,可能会有用。

祝好运!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM