JTextField y tamaño de estos
Hola buenas tardes
Tengo un problemilla, estoy realizando una interfaz gráfica. Tengo que controlar el tamaño de los campos que me introducen. Lo puedo hacer al final, pero me molaria que cuando el campo tuviese un tamaño determinado no me dejara escribir mas en pantalla. Me han dicho que se puede hacer controlando los KeyEvent, pero no tengo mucha idea de como hacerlo. Me podriais indicar como hacer y algun ejemplillo.
Muchas gracias
Tengo un problemilla, estoy realizando una interfaz gráfica. Tengo que controlar el tamaño de los campos que me introducen. Lo puedo hacer al final, pero me molaria que cuando el campo tuviese un tamaño determinado no me dejara escribir mas en pantalla. Me han dicho que se puede hacer controlando los KeyEvent, pero no tengo mucha idea de como hacerlo. Me podriais indicar como hacer y algun ejemplillo.
Muchas gracias
Hola!
Para resolver tu problema puedes hacer 3 cosas:
- Poner un escuchador KeyListener a tu textfield:
myTextField.addKeyListener( new KeyAdapter() {
public void keyPressed(KeyEvent e) {
String text = myTextField.getText();
if (text.length() > maxLength) {
text = text.subString(0, maxLength);
myTextField.setText(text);
}
}
}
- Implementar una clase que herede de JTextField y sobreescribir su método processKeyEvent() o processComponentKeyEvent() (uno de los dos, no estoy seguro de cual). Este método se ejecuta cuando el propio JTextField detecta un KeyEvent y con este método lo procesa. Lo que tendrÃas que hacer es comparar el tamaño del texto ya escrito con el máximo si es menor al maxLength llamar al super.processKeyEvent() para que procese el evento y escriba la letra, si es igual a maxLength no hace nada.
- Ponerle un Document al textField. Esto es un poco más complicado de explicar, asà que te paso un link:
http://java.sun.com/docs/books/tutorial/uiswing/events/documentlistener.html
Luismahou
Para resolver tu problema puedes hacer 3 cosas:
- Poner un escuchador KeyListener a tu textfield:
myTextField.addKeyListener( new KeyAdapter() {
public void keyPressed(KeyEvent e) {
String text = myTextField.getText();
if (text.length() > maxLength) {
text = text.subString(0, maxLength);
myTextField.setText(text);
}
}
}
- Implementar una clase que herede de JTextField y sobreescribir su método processKeyEvent() o processComponentKeyEvent() (uno de los dos, no estoy seguro de cual). Este método se ejecuta cuando el propio JTextField detecta un KeyEvent y con este método lo procesa. Lo que tendrÃas que hacer es comparar el tamaño del texto ya escrito con el máximo si es menor al maxLength llamar al super.processKeyEvent() para que procese el evento y escriba la letra, si es igual a maxLength no hace nada.
- Ponerle un Document al textField. Esto es un poco más complicado de explicar, asà que te paso un link:
http://java.sun.com/docs/books/tutorial/uiswing/events/documentlistener.html
Luismahou