Pregunta

Estoy trabajando en un proyecto Java y necesita tener una pulsación de tecla simular un clic en un JTextField. Lo que estoy buscando es el equivalente del método JButton doClick ().

Estoy tratando de tener la pulsación de tecla "ENTER" realizan la misma función exacta como un clic en el JTextField.

No está seguro de qué otra información para proporcionar. Gracias de antemano.

¿Fue útil?

Solución 2

OK, gracias por la ayuda. Supongo que no estaba siendo clara, pero ahora he descubierto una manera de hacer mi trabajo código gracias a algunas de sus ideas.

Yo ya había pensado en sólo la creación de un método privado que fue llamado por ambas funciones, sino que forma parte del código tiene que saber lo que JTextField el usuario hace clic en. Descubrí .getFocusOwner (), lo que me permite hacer referencia al elemento actual con el foco (el JTextField). Algo como esto

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

No fue probablemente una mejor manera de hacer esto, pero básicamente tuve una serie de JTextFields y el programa estaba funcionando correctamente cuando usuarios han hecho clic en el siguiente JTextField, pero cuando enter No sabía cómo llamar al JTextField que se acaba de entrar, así que quería simular un clic en el JTextField (que requiere atención). Supongo que debería haber acaba de explicar toda mi problema.

Gracias.

Otros consejos

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

Enviar "Enter" para su JTextField. Este fue robada a aquí .

Si desea que la misma cosa que suceda tanto por el ratón y pulsar una tecla, ¿no tendría más sentido tener un método llamado por ambos? Es decir, que tiene un método como el que es llamada fieldClicked tanto por el MouseListener y por el KeyListener. Esto sería más fácil de depurar - menos curioseaba con los eventos, que pueden ser muy confuso -. Y probablemente más fácil de leer

  

Lo que quiero es cuando el usuario presiona   introducir, llama al mismo código que cuando   hacen clic en cualquier lugar en el marco

Sin embargo, no tiene sentido para mí.

Cuando el usuario hace clic en cualquier lugar en el marco de un par de cosas suceden:

a) el campo de texto pierde el foco

b) algunas otras ganancias componentes de enfoque

Se podría añadir un ActionListener al campo de texto. El ActionListener se invoca cuando se pulsa la tecla Intro. Pero entonces, ¿cómo adivinar en qué parte del marco para generar haga clic en un ratón? Parece que la lógica aleatoria a mí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top