🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.lenguajes.java
Article #26846

Re: Comunicaci�n Javascript --> Java

#26846
From: Alejandro Navarro
Date: Wed, 25 Nov 1998 00:00
80 lines
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-mail
References: <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