Seleccione todo sobre el enfoque en muchos jtextfield
-
28-10-2019 - |
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
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):
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();
}