Как моделировать щелчок на JTextField? Эквивалент jbutton doclick ()?
-
20-09-2019 - |
Вопрос
Я работаю над проектом Java, и мне нужно, чтобы Keypress моделировал щелчок на JTextField. Я ищу эквивалент метода Jbutton Doclick ().
Я пытаюсь заставить Keypress «Enter» выполнить ту же функцию, что и нажмите на JTextField.
Не уверен, какую другую информацию предоставить. Заранее спасибо.
Решение 2
Хорошо, спасибо за помощь. Думаю, мне не было ясного, но теперь я обнаружил способ заставить мой код работать благодаря некоторым из ваших идей.
Я уже подумал о том, чтобы просто создать частный метод, который были вызваны обеими функциями, но часть кода должна знать, на какую jtextfield нажимается пользователь. Я обнаружил .getfocusowner (), который позволяет мне ссылаться на текущий элемент с фокусом (JTextfield). Что-то вроде этого
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_ENTER) {
Object which = JFrame.getFocusOwner();
if(which.getClass() == JTextField.class)
foo(which);
}
}
public void mouseClicked(MouseEvent e) {
Object which = e.getSource();
if(which.getClass()== JTextField.class) {
foo(which);
}
}
Вероятно, был лучший способ сделать это, но в основном у меня был массив JTextFields, и программа функционировала должным образом, когда пользователи нажимали на следующий JTextField, но при нажатии Enter я не знал, как назвать JTextField, который был только что введен Поэтому я хотел имитировать щелчок на JTextField (который требует фокусировки). Думаю, я должен был только что объяснить всю свою проблему.
Спасибо.
Другие советы
public void simulateKey(KeyEvent e, Component c) {
Field f = KeyEvent.class.getField("focusManagerIsDispatching");
f.setAccessible(true);
f.set(e, Boolean.TRUE);
c.dispatchEvent(e);
}
Отправьте «Введите» в свой JTextfield. Это было украдено из здесь.
Если вы хотите, чтобы одно и то же произошло как из -за мыши, так и нажатия клавиш, разве не имеет смысла иметь метод, который называется обоими? То есть у вас есть метод, как fieldClicked
который называется оба MouseListener
и по KeyListener
. Анкет Это было бы легче отлаживать-без соревнования, что может быть очень запутанным-и, вероятно, более читаемо.
Что я хочу, так это когда пользователь нажимает Enter, он вызывает тот же код, что и когда он нажимает в любом месте в кадре
Все еще не имеет смысла для меня.
Когда пользователь нажимает в любом месте, где на кадре происходят пару вещей:
а) Текстовое поле теряет фокус
б) Некоторые другие компоненты получают фокус
Вы можете добавить ActionListener в текстовое поле. ActionListener вызывается при нажатии клавиши Enter. Но как вы угадаете, где на кадре, чтобы сгенерировать щелчок мыши? Для меня кажется случайной логикой.