Article View: es.comp.lenguajes.java
Article #29534Re: Acentos y caracteres especiales
From: Cesar Alvarez Nu�ez ceal20
Date: Fri, 28 Nov 1997 00:00
Date: Fri, 28 Nov 1997 00:00
198 lines
6622 bytes
6622 bytes
Jose Vicente Albert Arcas wrote:
>
> Tengo un problema:
>
> Utilizando alg�n componente de texto del AWT, por ejemplo, un
> TextField;
> �C�mo se puede conseguir poder escribir acentos y caracteres especiales
> en los
> componentes de este tipo?
>
> Gracias.
Yo tambien tenia ese problema con Netscape 3.x y 4.01 y 4.02 por lo que herede esa clase,
cre�ndome un TextFieldTilde que captua los eventos de teclado y proces�ndolo de manera adecuada.
..................................CORTAR AQU�..........................................
/*---------------------------------------------------------------------------
Fichero.....: TextFieldTilde.java
Descripci�n.: Este fichero contiene la clase "app.minisic.TextFieldTilde", la
cual deriva de la clase "java.awt.TextFieldTilde" y en la que se
sobreescribe el m�todo "keyDown" con el fin de que se
soporten los acentos y otros caracteres especiales del
lenguaje castellano.
Versi�n.....: 1.0
Autor...: C�sar �lvarez N��ez
Fecha de creaci�n...............: 23/10/1997
Fecha de la �ltima modificaci�n.: 24/10/1997
Observaciones.: En la actualidad este problema solo existe con el
navegador Netscape 3.x , 4.01 y 4.02
............................................................................
Hist�rico de cambios:
24/10/1997: El navegador Microsoft Internet Explorer genera una excepci�n
de seguridad por el hecho de intentar obtener el valor de la
propiedad "browser.version" por lo que este valor s�lo se
obtendr� en el caso de el navegador sea Netscape.
05/11/1997: Dentro del m�todo "setAplicar" se a a�adido la verificaci�n
de que la cadena de caracteres devuelta al intentar conocer
el navegador sea nula, para que no rompa la clase, en el caso
de que no se utilize ning�n navegador.
----------------------------------------------------------------------------*/
import java.awt.Event;
public class TextFieldTilde extends java.awt.TextField {
static boolean aplicar = false; // Indica si hay que aplicar el procesado
// previo de las teclas con el fin de
// soportar acentos.
// Constructores.
public TextFieldTilde() {
super();
setAplicar();
}
public TextFieldTilde(int col) {
super(col);
setAplicar();
}
public TextFieldTilde(String texto) {
super(texto);
setAplicar();
}
public TextFieldTilde(String texto, int col) {
super(texto,col);
setAplicar();
}
// M�todo sobreescrito con el fin de aceptar acentos.
//-----------------------------------------------------
public boolean keyDown (Event evt, int key) {
if (aplicar) { // En caso de que se necesite aplicar preprocesado
switch (key) {
// Valor unicode de la tecla '�'
case 65473: setText(getText() + "�"); // A�ado al texto almacenado la letra �
evt.id = Event.KEY_ACTION; // M�difico el evento para que emule la
evt.key = Event.END; // pulsaci�n de la tecla END.
evt.modifiers = 0; // Esta l�nea ah� que a�adirla para evitar
// que seleccione todo el contenido.
break;
case 65505: setText(getText() + "�");
evt.id = Event.KEY_ACTION;
evt.key = Event.END;
break;
case 65481: setText(getText() + "�");
evt.id = Event.KEY_ACTION;
evt.key = Event.END;
evt.modifiers = 0;
break;
case 65513: setText(getText() + "�");
evt.id = Event.KEY_ACTION;
evt.key = Event.END;
break;
case 65485: setText(getText() + "�");
evt.id = Event.KEY_ACTION;
evt.key = Event.END;
evt.modifiers = 0;
break;
case 65517: setText(getText() + "�");
evt.id = Event.KEY_ACTION;
evt.key = Event.END;
break;
case 65491: setText(getText() + "�");
evt.id = Event.KEY_ACTION;
evt.key = Event.END;
evt.modifiers = 0;
break;
case 65523: setText(getText() + "�");
evt.id = Event.KEY_ACTION;
evt.key = Event.END;
break;
case 65498: setText(getText() + "�");
evt.id = Event.KEY_ACTION;
evt.key = Event.END;
evt.modifiers = 0;
break;
case 65530: setText(getText() + "�");
evt.id = Event.KEY_ACTION;
evt.key = Event.END;
break;
case 65500: setText(getText() + "�");
evt.id = Event.KEY_ACTION;
evt.key = Event.END;
evt.modifiers = 0;
break;
case 65532: setText(getText() + "�");
evt.id = Event.KEY_ACTION;
evt.key = Event.END;
break;
}// switch
}// if(aplicar)
return super.keyDown(evt,key);
}
// M�todo......: setAplicar
//
// Descripci�n.: Pondr� a verdadero el atributo 'aplicar' en caso de
// que el navegador que se est� usando sea 'Netscape' en
// sus versiones 3.x, 4.01 y 4.02
//---------------------------------------------------------------------
private void setAplicar() {
String navegador = System.getProperty("browser");
aplicar = false;
if ((navegador != null) && (navegador.indexOf("Netscape") != -1)) {
// El navegador es de Netscape.
String version = System.getProperty("browser.version");
if ((version.indexOf("3.") != -1) ||
(version.indexOf("4.01") != -1) ||
(version.indexOf("4.02") != -1)) {
// La versi�n del navegador es 3.x � 4.01 � 4.02
aplicar = true;
}
}
}
}
.................................FIN.....................................................
Espero que te sirva de ayuda.
--
----------------------------------------------------------------
Cesar Alvarez Nu�ez E-mail: ceal20@tid.es
TECSIDEL S.A.
C/ Ramirez de Arellano, 37, 4� planta - 28043 Madrid
Tfno: 515 31 61 (directo), 515 31 54 ext 261 (centralita)
515 31 63 (fax)
----------------------------------------------------------------
Technical Details
Message-ID:
<347E6725.2183@tid.es>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<347CD037.2100@inf.upv.es>Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII X-Google-Thread: 1116f3,2ea731856ba36677 X-Google-Attributes: gid1116f3,public From: "Cesar Alvarez Nu�ez (ceal20@tid.es)" <ceal20@tid.es> Subject: Re: Acentos y caracteres especiales Date: 1997/11/28 Message-ID: <347E6725.2183@tid.es> X-Deja-AN: 293344488 References: <347CD037.2100@inf.upv.es> To: Jose, Vicente, Albert, Arcas Organization: Tecsidel Newsgroups: es.comp.lenguajes.java