🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Acentos

#29341
From: Sergio Martinez Gonzalez
Date: Tue, 23 Dec 1997 00:00
131 lines
4367 bytes
Llu�s Felip Hurtado i Oliver wrote:
> 
> Como consigo poner acentos en un TextField ?.
> 
> Gracias!!!!

Loc componentes de texto del AWT tienen algunas deficiencias que pueden
hacer crispar los nervios, como la ignorancia absoluta del CAPS LOCK y
de los acentos....

Estuve investigando el tema llegando hasta los fuentes del JDK y en un
arrebato de desesperaci�n acab� especializando de TextField una clase
para salir del paso hasta que en futuras versiones del JDK subsanen este
problemilla :)

Talvez alguien te muestre una soluci�n m�s limpia y elegante, pero de
momento espero que esto te sirva: una clase derivada de TextField que
captura las pulsaciones del teclado, detecta las pulsaciones de las
teclas de acentos y transforma las vocales mediante una tabla de
conversi�n. Se utiliza �dem que un TextField...

S�, ya lo s�, muchos pensar�n que es una cutrada, pero hay momentos en
los que uno se enciega y cuando ya crees que lo has probado todo...

A m� me funciona en varias m�quinas con Windows95 y JDK 1.1.4. No lo he
testeado en NT, Solaris, etc y tampoco he comprobado si en m�quinas con
diferentes idiomas se trastoca el funcionamiento.

Si no acaba de funcionar bien, talvez se deba a que hay que reajustar
los valores de las teclas KEY_ACENTO y KEY_BACENTO...

AQUI TIENES EL CODIGO......


import	java.awt.TextField;
import	java.awt.AWTEvent;
import	java.awt.event.KeyEvent;

public class MyTextField extends TextField {

  final static int  LEN_TABLE   = 10;

  final static int  KEY_ACENTO	= 222;  // tecla acento �
  final static int  KEY_BACENTO	= 186;	// tecla acento `

  final static int  INX_ACENTO	= 1;  
  final static int  INX_BACENTO	= 3;

  final	static protected char converTable[][] = {
   { 'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U' },
   { '�', '�', '�', '�', '�', '�', '�', '�', '�', '�' },
   { '�', '�', '�', '�', '�', '�', '�', '�', '�', '�' },
   { '�', '�', '�', '�', '�', '�', '�', '�', '�', '�' },
   { '�', '�', '�', '�', '�', '�', '�', '�', '�', '�' }
  };

  protected int		indexToTable = 0;

  public MyTextField() {
   super();
   enableEvents(AWTEvent.KEY_EVENT_MASK);
  }

  public MyTextField(String text) {
    super(text);
    enableEvents(AWTEvent.KEY_EVENT_MASK);
  }

  public MyTextField(int columns) {
    super(columns);
    enableEvents(AWTEvent.KEY_EVENT_MASK);
  }

  public MyTextField(String text, int columns) {
    super(text, columns);
    enableEvents(AWTEvent.KEY_EVENT_MASK);
  }

  protected void processKeyEvent(KeyEvent e) {

    super.processKeyEvent(e);

    switch(e.getID()) {

      case KeyEvent.KEY_PRESSED:
      break;

      case KeyEvent.KEY_RELEASED:
        switch (e.getKeyCode()) {
          case KEY_ACENTO:
            indexToTable = INX_ACENTO;
          break;

          case KEY_BACENTO:
            indexToTable = INX_BACENTO;
          break;

          case KeyEvent.VK_SHIFT:
            if (indexToTable > 0) {
              ++indexToTable;
              break;
            }

          default:
            indexToTable = 0;
         }
       break;

       case KeyEvent.KEY_TYPED:
         if (indexToTable > 0) {
           char ch = e.getKeyChar();
           for (int cnt= 0; cnt < LEN_TABLE; cnt++)
             if (converTable[0][cnt] == ch) {
                e.setKeyChar(converTable[indexToTable][cnt]);
                return;
             }
           }
        break;
      }
    }
}


Espero que te sirva de ayuda. Saludos...

-- 
  """""   |  Sergio Martinez Gonzalez    
  O   -   |  METHOD SOFTWARE             
{   .   } |  e-mail: zengui@ibernet.com
   ---  o |  www:    no tengo todavia...
Technical Details
Message-ID: <349F96BB.53378D83@ibernet.com>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail
References: <34991048.FE6C565F@iti.upv.es>

Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII
X-Google-Thread: 1116f3,c39d3eebaf80522
X-Google-Attributes: gid1116f3,public
From: Sergio Martinez Gonzalez <zengui@ibernet.com>
Subject: Re: Acentos
Date: 1997/12/23
Message-ID: <349F96BB.53378D83@ibernet.com>
X-Deja-AN: 309593053
Content-Transfer-Encoding: 8bit
References: <34991048.FE6C565F@iti.upv.es>
X-Priority: 3 (Normal)
Content-Type: text/plain; charset=iso-8859-1
Organization: Method Software
Mime-Version: 1.0
Newsgroups: es.comp.lenguajes.java