Borrar

monica
05 de Septiembre del 2003
Hola!

Tengo un JTextPane, en un momento dado selecciono una parte de él, es decir, que hago click en el. si se pulsa un botón, tiene que borrar el caracter que hay inmediatamente después del cursor.
Es decir, como si se pulsara la tecla supr

Puede que sea una tontería, pero no sé cómo hacer eso. ¿Podeis ayudarme?

DAGGER
05 de Septiembre del 2003
Mira aca te dejo este fuente. hace lo que necesitascon (alt +z ) pero a diferencia del suprimir no elimina el texto cuando esta seleccionado sino el caracter que este por delante.
Espero que te sea util

import javax.swing.*;
import java.awt.event.*;
import java.awt.event.KeyListener;
import java.util.EventListener;
import java.awt.event.KeyEvent;

class Test extends JFrame implements KeyListener {
private JTextPane texto;

public Test() {
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
System.exit(0);
}
});
texto= new JTextPane();
texto.addKeyListener(this);
this.getContentPane().add(texto);
}

public static void main(String args[]) {
Test mainFrame = new Test();
mainFrame.setSize(400, 400);
mainFrame.setTitle("Como el suprimir.. pero con alt+z");
mainFrame.setVisible(true);
}

public void keyTyped(KeyEvent e) {}
public void keyPressed(KeyEvent e) {}

public void keyReleased(KeyEvent e) {
if(e.getKeyChar()=='z'&&e.isAltDown()){
int start=texto.getSelectionStart();
int end=texto.getSelectionEnd();
try{
StringBuffer tmp= new StringBuffer(texto.getText(0,texto.getSelectionEnd()));
if(texto.getSelectionEnd()<texto.getText().length()){
tmp.append(texto.getText(texto.getSelectionEnd()+1,texto.getText().length()-texto.getSelectionEnd()-1));
}
texto.setText(tmp.toString());
}catch(javax.swing.text.BadLocationException j){
System.err.println("Indice fuera de rango");
}finally{
texto.setSelectionStart(start);
texto.setSelectionEnd(end);
}
}
}
}