我最近在使用Java JTextField时遇到了一个奇怪的问题。当我运行以下代码时(见下文),首先输入“0”到文本框会发送一次粘贴操作,然后才会输入“0”。例如,如果将“text”复制到剪贴板中,则当我键入“0”时,将会输入“text0”。类似地,键入“4”会用“4”替换先前的字符(我猜这是删除操作,然后键入“4”)。键入“7”会清除文本字段,然后再输入“7”。
以下是代码:
import javax.swing.JFrame;
import javax.swing.JTextField;
public class Main {
public static void main(String[] args) {
JFrame frame = new JFrame();
JTextField text = new JTextField();
frame.add(text);
frame.setSize(500, 500);
frame.setVisible(true);
}
}
问题发生在Red Hat Linux上(通过Windows XP使用VNC访问);在Windows XP上一切都按预期运行。
更新:在Ubuntu上程序没有问题。我也尝试过使用不同的键盘和VNC查看器。
更新2:Java版本
对于Red Hat:
java version "1.6.0_17"
OpenJDK Runtime Environment (IcedTea6 1.7.7) (rhel-1.17.b17.el5-x86_64)
OpenJDK 64-Bit Server VM (build 14.0-b16, mixed mode)
对于 XP 操作系统:
java version "1.7.0_05"
Java(TM) SE Runtime Environment (build 1.7.0_05-b05)
Java HotSpot(TM) Client VM (build 23.1-b03, mixed mode, sharing)
更新3: 尝试在三台不同的红帽机器上运行程序(都在同一工作组中),并且还尝试从另一台XP计算机上运行它并重新启动。
更新4: 今天我来到公司发现问题神奇地消失了。然而,知道为什么出现这个问题的原因真的很好,这样我(和任何可能遇到这个奇怪问题的人)就知道将来如何解决它。