Pregunta

Tengo muchos JTextFields en mi aplicación (alrededor de 34 JTextFields) y quiero que todos seleccionen todo su texto cuando obtengan el enfoque y no sean ningún texto en el enfoque perdido.
¿Hay alguna forma de hacer esto con un oyente o debo escribir un "enfoque" y un "rayo de enfoque" para cada uno de estos 34 JTextfields?

Gracias

¿Fue útil?

Solución

Cree en clase y extienda el JTextfield ahora implementa lo que quieras en esta clase. Y donde puedes crear objeto de jtextfield como este

JTextField txt1 = new JTextField();
frm.add(txt1);

En lugar de hacer de esta manera

JTextField txt1 = new CustomText();
frm.add(txt1);

Entonces tienes que establecer la clase común para el campo de texto

Otros consejos

Crea una clase para esta tarea:

static class FocusTextField extends JTextField {
    {
        addFocusListener(new FocusListener() {

            @Override
            public void focusGained(FocusEvent e) {
                FocusTextField.this.select(0, getText().length());
            }

            @Override
            public void focusLost(FocusEvent e) {
                FocusTextField.this.select(0, 0);
            }
        });
    }
}

Uso de ejemplo (código a continuación):

screenshot

public static void main(String[] args) throws Exception {

    JFrame frame = new JFrame("Test");
    frame.setLayout(new GridLayout(5, 1));

    frame.add(new FocusTextField());
    frame.add(new FocusTextField());
    frame.add(new FocusTextField());
    frame.add(new FocusTextField());
    frame.add(new FocusTextField());

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
    frame.setVisible(true);
}

¿Hay alguna forma de hacer esto con un oyente?

Puede usar el tecladofocusmanager. Ver el ejemplo de Oyentes de eventos globales.

Diría que la manera fácil de hacerlo es agregar una acción al hacer clic que simplemente selecciona todo

private void jTextField1MouseClicked(java.awt.event.MouseEvent evt) {                                         
    jTextField1.selectAll();
}                      
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top