Article View: es.comp.lenguajes.java
Article #26682Re: retorno del getText()
From: Alejandro Navarro
Date: Thu, 26 Nov 1998 00:00
Date: Thu, 26 Nov 1998 00:00
84 lines
3646 bytes
3646 bytes
fifeton@iname.com wrote:
> Hola!
> Estamos realizando una aplicaci�n y tenemos un peque�o problema con los
> textFields.
> Escuchamos el KeyListener y cuando pulsamos alguna tecla sobre los
> textfields, queremos saber si el texto que este contiene ha sido
> modificado .
> En el Netscape, cuando hacemos el getText() en el m�todo keyPressed,
> �ste siempre nos retorna el texto anterior al texto que vemos en
> pantalla.
>
> Sabe alguien como solucionar esto?
> Gracias
> Sergio&Nerea
Te voy a poner un ejemplo para que lo veas. Mi textField solo acepta
valores num�ricos.
class MiKeyListener extends KeyAdapter
{
// este m�todo es el primero que se ejecuta y todav�a
// no ha cargado el caracter en el TextField
public synchronized void keyPressed(KeyEvent evt)
{
TextField caja;
// recupera el c�digo de tecla
switch ( evt.getKeyCode() )
{
case KeyEvent.VK_0:
... // del 0 al 9 del teclado alfanum�rico
case KeyEvent.VK_9:
case KeyEvent.VK_NUMPAD0:
... // del 0 al 9 del teclado num�rico
case KeyEvent.VK_NUMPAD9:
// consume el evento para que el caracter no se cargue en el
TextField
evt.consume();
// recupera el TextField
caja = (TextField) evt.getSource();
// inserta el caracter al final del TextField
caja.setText(caja.getText()+evt.getKeyChar());
// no dejo que se cargue solo porque en algunos
// navegadores no lo carga antes de llegar a KeyTyped()
// Ej. Netscape 4.07 bajo Solaris 2.5.1
break;
case KeyEvent.VK_BACK_SPACE:
// trata BACK_SPACE
break;
case KeyEvent.VK_DELETE:
// trata la tecla suprimir
break;
case KeyEvent.VK_TAB:
case KeyEvent.VK_LEFT:
case KeyEvent.VK_RIGHT:
break; // deja que estas teclas funcionen por defecto
// con estas teclas nunca he tenido problemas
default:
evt.consume(); // consume el evento
}
// este m�todo de ejecita despu�s de keyPressed
public synchronized void keyTyped(KeyEvent evt)
{
// ahora s� tengo el caracter en el TextField
}
}
�Por qu� tengo que montarme esta pel�cula y no uso TextListener y
textValueChanged(TextEvent evt)?
Porque en algunos navegadores (Ej. Netscape 4.07 bajo Solaris 2.5.1) no
carga la tecla pulsada en el TextField cuando se ejecuta
textValueChanged(TextEvent evt) y necesito que mi applet sea lo m�s
compatible posible.
�Por qu� tengo que controlar cada tecla en KeyPressed(KeyEvent evt)?
Por la misma raz�n. En algunos navegadores no carga la tecla pulsada en el
TextField cuando se ejecuta keyTyped(KeyEvent evt).
En las pruebas que he realizado en 95, 98 y NT (con Netscape, Hotjava y
Explorer) no he tenido problemas con keyTyped(KeyEvent evt), es decir, la
tecla siempre era cargada en el TextField antes de ejecutar
keyTyped(KeyEvent evt).
Technical Details
Message-ID:
<365D7E03.63CC59D0@esed.es>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<365D6C80.18F6F6A@iname.com>Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII X-Google-Thread: 1116f3,c6796108be68ea0d X-Google-Attributes: gid1116f3,public From: Alejandro Navarro <anv@esed.es> Subject: Re: retorno del getText() Date: 1998/11/26 Message-ID: <365D7E03.63CC59D0@esed.es> X-Deja-AN: 415905857 Content-Transfer-Encoding: 8bit References: <365D6C80.18F6F6A@iname.com> Content-Type: text/plain; charset=iso-8859-1 Organization: Cibernos S.A. (Departamento I+D) Mime-Version: 1.0 Newsgroups: es.comp.lenguajes.java