La Web del Programador: Comunidad de Programadores
 
    Pregunta:  61924 - BORRAR ULTIMA LETRA DE UN STRING EN JAVA
Autor:  Gina Peña
Hola.

Estoy trabajando en el entorno JCREATOR PRO 4.00 y deseo poner una función que me borre la ultima letra de un string.

Por ejemplo si escribo la palabra MARIA al presionar el boton borrar me muestre MARI, es decir la A ya se ha borrado.

Si alguien puede ayudarme en esto.

Yo trate haciendo lo siguiente:

String aux = label1.getText();
Int borra = aux.lenght()-1;
label1.setText(label1.getText(integer.toString(borra));

Pero no sirvio porque me devuelve es un 0 y me borra todas las letras.

Espero Ayuda. Gracias.

  Respuesta:  alex
wenas, supongo que en tu clase habrás implementado el interface "KeyListener" para que responda a los eventos del teclado mediante alguna de sus funciones:

public void keyTyped(KeyEvent e);
public void keyPressed(KeyEvent e);
public void keyReleased(KeyEvent e);

bien, pues los métodos de la clase "KeyEvent", que esas funciones piden como parámetros, te permitirán reconocer las teclas que se pulsen:

* Métodos de la clase KeyEvent:

- int getKeyChar() Obtiene el carácter Unicode asociado con el evento

- int getKeyCode() Obtiene el VKC de la tecla pulsada o soltada

Las VKC (Virtual KeyCodes) son unas constantes que se corresponden con las
teclas físicas del teclado, sin considerar minúsculas(que no tienen VKC).
Se indican con el prefijo VK_, como VK_SHIFT o VK_A.
La clase KeyEvent(en el package java.awt.event) define constantes VKC para
todas las teclas del teclado.

- boolean isActionKey() Indica si la tecla del evento es una ActionKey (HOME,
END, …)

- String getKeyText(int keyCode) Devuelve un String que describe el VKC, tal como
"HOME", "F1" o "A". Estos Strings se definen en el fichero awt.properties

- String getKeyModifiersText(int modifiers) Devuelve un String que describe las
teclas modificadoras, tales como"Shift" o "Ctrl+Shift" (fichero awt.properties)

* Métodos heredados de InputEvent:

- boolean isShiftDown(), boolean isControlDown(), boolean isMetaDown(),
boolean isAltDown(), int getModifiers()
Permiten identificar las teclas modificadoras

...

... después de todo esto ( que encontré por ahí no se ya ni cuándo), te pongo la parte de código que a mi me funciona para esa tecla:

(En este caso, he denominado "s" al texto original, que por algún sitio lo tendrás que hacer llegar, y "texto" al resultado final que se busca, para devolverlo donde se necesite)
...
String texto = "";
...
public void keyPressed(KeyEvent e){
...
...
//BACKSPACE
if(e.getKeyCode() == e.VK_BACK_SPACE){
//array de caracteres del texto
char k[] = new char[s.length()];
for(int i = 0 ; i < s.length(); i++){
k[i] = s.charAt(i);
}
//rellenamos el texto con el array
this.texto = "";
for(int i = 0 ; i < s.length()-1; i++){
this.texto += k[i];
}
}else{
this.texto = s + e.getKeyChar();
// esto es para poder escribir la "ñ" sin borrarse el texto
}
...
...
}

... espero que te sirva de algo ...
... saludos!!