El siguiente código es un applet que muestra un textarea con un texto por defecto, y un botón. El usuario puede seleccionar una parte del texto del textarea, y teniéndola seleccionada, al pulsar sobre el botón, se sustituirá el texto seleccionado por la frase "Hola desde java". La cosa funciona cuando selecciono parte del texto por defecto. También funciona cuando añado texto extra en la misma línea que el texto por defecto. Pero si añado texto extra en una nueva línea del textarea (cuando se está ejecutando el applet), y selecciono una parte de este texto, entonces hace el reemplazo anormalmente. El resultado no es el deseado. Espero puedan ayudarme:
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
public class AREADETEXTO1 extends Applet implements ActionListener {
TextArea areaTexto;
Button boton;
public void init() {
areaTexto = new TextArea("Ya es la hora.",5,20,TextArea.SCROLLBARS_BOTH);
add(areaTexto);
boton = new Button("Haga clic aquí");
add(boton);
boton.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == boton) {
areaTexto.replaceRange("Hola desde Java",areaTexto.getSelectionStart(),areaTexto.getS electionEnd());
}
}
}
Éso mismo me ocurre con un applet que selecciona texto. Cuando el texto está en una nueva línea, no lo selecciona bien. Supongo que tendrá algo que ver con el carácter de nueva línea, aunque no tengo ni idea en realidad:
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
public class AREADETEXTO2 extends Applet implements ActionListener {
TextArea areaTexto;
Button boton;
public void init() {
areaTexto = new TextArea("Ya es la hora.",5,20,TextArea.SCROLLBARS_BOTH);
add(areaTexto);
boton = new Button("Haga clic aquí");
add(boton);
boton.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == boton) {
String texto = areaTexto.getText();
String cadena = new String("hora");
int posicion = texto.indexOf(cadena);
areaTexto.select(posicion,posicion+cadena.length() );
}
}
}