- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我在 JavaFX 中使用带有内容可编辑主体的 WebView 作为富文本编辑器。它工作正常,但我需要听按键。它适用于回车键和 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”视为相等,它可能会很有用。
祝你好运!
关于JavaFX KeyEvent 和重音字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14984743/
我正在寻找一种方法来支持不区分大小写 + 重音不区分搜索的良好性能。到目前为止,我们在使用 MSSql 服务器时没有遇到任何问题,在 Oracle 上我们必须使用 OracleText,而现在我们在
这个问题已经有答案了: Trouble with UTF-8 characters; what I see is not what I stored (5 个回答) 已关闭 5 年前。 我刚刚将一个我
我正在寻找一种在 Linux 中使用反引号 (`)/波形符 (~) 键和其他一些键创建键盘快捷键的方法。在理想情况下: 按下波形符没有任何作用 按下波形符的同时按另一个键会触发(可自定义的)快捷方式
我有一个由术语组成的数组,其中一些包含重音字符。我像这样做一个 preg grep $data= array('Napoléon','Café'); $result = preg_grep('~' .
我使用 TextBox 在 DataGridView 中进行过滤 image .这是完美的工作。表格的单元格包含 1250 个拉丁字符。我想搜索忽略单元格中单词的重音。例子。如果是文本框 "knjaz
我在 Vim 中遇到一个奇怪的映射问题。我使用的是 Azerty 键盘。 在我的 .vimrc 中,我有以下命令可以在段落之间快速移动。 nnoremap _ { vnoremap _ { nnore
我尝试读取一个utf8编码的vcf文件,结果是: { "name": "=4A=61=76=69=65=72=20=4C=75=6A=C3=A1=6E", "tel":
我的数据库中有两个表,info 和 comment,它们的结构如下: info (id(int(10)), name(varchar(80)), ...19 other columns.., phon
我使用 QtWebkit 制作了一个应用程序。在同一个 html 页面中,在 Windows 上使用重音符号(西类牙语)时可以正常工作,但在 Linux (Ubuntu) 上则不起作用。 我不明白为什
我有(例如)两个字符串: $a = "joao"; $b = "joão"; if ( strtoupper($a) == strtoupper($b)) { echo $b; } 我希望它是
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: invalid multibyte char (US-ASCII) with Rails and Ruby
我重写 URL 以包含用户生成的旅游博客的标题。 我这样做是为了 URL 的可读性和 SEO 目的。 http://www.example.com/gallery/280-Gorges_du_Tod
我最近安装了新的 Windows 10 build 14393,我想使用新的 linux 子系统。所以我决定学习 ncurses,但我找不到如何从 getch 中获取带有重音符的字符的 UTF-8 代
我是一名优秀的程序员,十分优秀!