我遇到了一个奇怪的问题。我的Java应用程序不接受重音字符,如é,è或ê。 Swing组件JTextField
将其转换为e。此外,我无法插入:'
这很奇怪,因为它不适用于分发给用户的编译和打包应用程序(JAR文件)。当我在Eclipse中执行我的应用程序时,一切正常:这些字符被接受。
我在启动时检查了使用过的VM编码。他们是不同的。打包的应用程序使用Cp1252,Eclipse以“ISO -...”启动它。系统属性“file.encoding”相应地显示了相关的编码。因此,我尝试切换编码,以便在Eclipse中重现问题或在我的应用程序中修复它。但结果和以前一样。
你知道发生了什么吗?
答案 0 :(得分:1)
好的,问题不是由Java或任何编码设置引起的。我的应用程序挂钩所有关键事件。有一个组件消耗了“死键”的关键事件。这就是编辑器组件(或JTextField)没有从事件调度程序接收密钥事件的原因。
答案 1 :(得分:0)
在OpenJDK错误跟踪器中引用了一个关于Swing问题的错误:https://bugs.openjdk.java.net/browse/JDK-8064448。