Domanda

Sto lavorando su un progetto Java e la necessità di avere una pressione del tasto simulare un clic su un JTextField. Quello che sto cercando è l'equivalente del metodo JButton DoClick ().

Sto cercando di avere la pressione del tasto "Enter" svolgere la stessa funzione esatto come un clic sul JTextField.

Non so quali altre informazioni per fornire. Grazie in anticipo.

È stato utile?

Soluzione 2

OK, grazie per l'aiuto. Credo che non ero chiaro, ma ora ho scoperto un modo per rendere il mio lavoro di codice grazie ad alcune delle vostre idee.

Avevo già pensato solo la creazione di un metodo privato che è stato chiamato da entrambe le funzioni, ma parte del codice ha bisogno di sapere quale JTextField l'utente fa clic su. Ho scoperto .getFocusOwner (), che mi permette di fare riferimento all'elemento corrente con messa a fuoco (la JTextField). Qualcosa di simile a questo

    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);
        }
    }

C'è stato probabilmente un modo migliore per fare questo, ma in fondo ho avuto una serie di JTextFields e il programma funzionava correttamente quando gli utenti hanno fatto clic sul prossimo JTextField, ma quando enter Non sapevo come chiamare il JTextField che era appena entrato così ho voluto simulare un clic sul JTextField (che richiede attenzione). Credo che dovrei appena spiegato tutto il mio problema.

Grazie.

Altri suggerimenti

public void simulateKey(KeyEvent e, Component c) {
   Field f = KeyEvent.class.getField("focusManagerIsDispatching");
   f.setAccessible(true);
   f.set(e, Boolean.TRUE);
   c.dispatchEvent(e);
}

Invia "Invio" al tuo JTextField. Questo è stato rubato da qui .

Se si desidera che la stessa cosa accada sia per il mouse e pressione di un tasto, non avrebbe più senso avere un metodo chiamato da entrambi? Cioè, si dispone di un metodo come fieldClicked che viene chiamato sia dal MouseListener e dal KeyListener. Questo sarebbe più facile per eseguire il debug - meno pasticciare in giro con gli eventi, che possono essere molto confusa -. E, probabilmente, più leggibile

  

Quello che voglio è quando l'utente preme   entrare, si chiama lo stesso codice come quando   fanno clic in qualsiasi parte del telaio

Ancora non ha senso per me.

Quando l'utente fa clic in qualsiasi luogo sul telaio di un paio di cose che succedono:

a) il campo di testo perde il focus

b) alcuni altri guadagni componenti concentrano

Si potrebbe aggiungere un ActionListener al campo di testo. L'ActionListener viene richiamato quando si preme il tasto Invio. Ma allora come a indovinare dove sul telaio per generare un clic del mouse? Sembra che la logica casuale per me.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top