Article View: es.comp.lenguajes.java
Article #26846Re: Comunicaci�n Javascript --> Java
From: Alejandro Navarro
Date: Wed, 25 Nov 1998 00:00
Date: Wed, 25 Nov 1998 00:00
80 lines
3564 bytes
3564 bytes
Fifeton wrote:
> Aupa Alejandro!
>
> Estamos escuchando los eventos KeyEvent de un textfield. Cuando pulsamos
> una tecla vemos que el textfield se acutaliza, pero al depurar, vemos
> que en el m�todo keyPressed, el m�todo getText del textfield nos
> devuelve el contenido del textfield ANTES de haberse pulsado la tecla.
> Sabes c�mo solucionar esto?
>
> Agur! 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:
<365BD991.2B70B00A@esed.es>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<36515830.C409CA15@usa.net> <365A95F7.50F2666@iname.com>Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII X-Google-Thread: 1116f3,1388fddc930b455f X-Google-Attributes: gid1116f3,public From: Alejandro Navarro <anv@esed.es> Subject: Re: Comunicaci�n Javascript --> Java Date: 1998/11/25 Message-ID: <365BD991.2B70B00A@esed.es> X-Deja-AN: 415464946 Content-Transfer-Encoding: 8bit References: <36515830.C409CA15@usa.net> <365A95F7.50F2666@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