最近、JavaJTextFieldで奇妙な問題が発生しました。次のコード(以下を参照)を実行すると、テキストフィールドに「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を使用してアクセス)で発生しています。すべてがWindowsXPで期待どおりに実行されます。
更新: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:3台の異なるRed Hatマシン(すべて同じグループで作業中)でプログラムを実行し、さらに別のXPコンピューターから実行して再起動してみました。
更新4:今日、私は問題が魔法のように消えたことを見つけるために職場に到着しました。しかし、そもそもなぜそれが起こったのかを知ることは本当に素晴らしいことです。そうすれば、私(そしてこの奇妙な問題に遭遇する多くの人)は将来それを修正する方法を知ることができます。