🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: retorno del getText()

#26682
From: Alejandro Navarro
Date: Thu, 26 Nov 1998 00:00
84 lines
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-mail
References: <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