Недавно я столкнулся со странной проблемой с Java JTextField. Когда я запускаю следующий код (см. ниже), ввод «0» в текстовое поле сначала отправляет действие вставки, а затем вводит «0». Например, если «текст» копируется в буфер обмена, «текст0» печатается, когда я набираю «0». Точно так же ввод «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 (доступ через VNC из Windows XP); все работает, как и ожидалось, в Windows XP.
Обновление: Проблем с программой в Ubuntu тоже нет. Я также пробовал использовать разные клавиатуры и программы просмотра VNC.
Обновление 2: версии Java
Для Красной Шляпы:
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. Попытался запустить программу на трех разных компьютерах с Red Hat (все в одной рабочей группе), а также попытался запустить ее с другого компьютера с XP и перезапустить.
Обновление 4. Сегодня я пришел на работу и обнаружил, что проблема волшебным образом исчезла. Тем не менее, было бы неплохо узнать, почему это произошло, чтобы я (и любой другой, кто сталкивается с этой странной проблемой) знал, как исправить это в будущем.