Отправка нажатий клавиш в JTextField - PullRequest
2 голосов
/ 27 сентября 2010

Я пытаюсь смоделировать ввод текста в JTextField.У меня есть строка длиной в 1 символ, содержащая букву, которую я хочу добавить, и я запускаю:

receiver.dispatchEvent(new KeyEvent(this,
  KeyEvent.KEY_TYPED, 0,
  this.shifted?KeyEvent.SHIFT_DOWN_MASK:0,
  KeyEvent.VK_UNDEFINED, text.charAt(0)));

Но это, похоже, совсем не меняет содержимое.Что мне здесь не хватает?

1 Ответ

2 голосов
/ 27 сентября 2010

Похоже на виртуальную клавиатуру: -)

Почти тот же код работает для меня.Я бы предложил следующее:

  1. Передать целевой объект JTextField (в вашем случае receiver) в качестве параметра source конструктору KeyEvent, то есть:

    receiver.dispatchEvent(new KeyEvent(receiver,
        KeyEvent.KEY_TYPED, System.currentTimeMillis(),
        modifiers, KeyEvent.VK_UNDEFINED, keyChar);
    
  2. Убедитесь, что у вашей цели JTextField есть фокус.

Редактировать:

ПростоЧтобы проверить приведенное выше предложение, я протестировал этот фрагмент кода:

Frame frame = new Frame();
TextField text = new TextField();
frame.add(text);
frame.pack();
frame.setVisible(true);

text.dispatchEvent(new KeyEvent(frame,
        KeyEvent.KEY_TYPED, 0,
        0,
        KeyEvent.VK_UNDEFINED, 'H'));

Это не работает, однако, если последняя строка изменена следующим образом (целевой компонент как параметр source параметра KeyEventконструктор), отлично работает:

text.dispatchEvent(new KeyEvent(text,
        KeyEvent.KEY_TYPED, 0,
        0,
        KeyEvent.VK_UNDEFINED, 'H'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...