Как моделировать щелчок на JTextField? Эквивалент jbutton doclick ()?

StackOverflow https://stackoverflow.com/questions/2445105

Вопрос

Я работаю над проектом 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. Но как вы угадаете, где на кадре, чтобы сгенерировать щелчок мыши? Для меня кажется случайной логикой.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top