🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Acentos y caracteres especiales

#29534
From: Cesar Alvarez Nu�ez ceal20
Date: Fri, 28 Nov 1997 00:00
198 lines
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-mail
References: <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