En el constructor (líneas 18 a 48), la línea 21 crea un contenedor
Box
(paquete
javax.swing
) para orga-
nizar los componentes de la GUI.
Box
es una subclase de
Container
que utiliza un administrador de esquemas
BoxLayout
(que veremos con detalle en la sección 22.9) para ordenar los componentes de la GUI, ya sea en
forma horizontal o vertical. El método
static
createHorizontalBox
de
Box
crea un objeto
Box
que ordena los
componentes de izquierda a derecha, en el orden en el que se adjuntan.
En las líneas 26 y 43 se crean los objetos
JTextArea
llamados
areaTexto1
y
areaTexto2
. La línea 26 utiliza
el constructor con tres argumentos de
JTextArea
, el cual recibe un objeto
String
que representa el texto inicial
y dos valores
int
que especifi can que el objeto
JTextArea
tiene
10
fi las y
15
columnas. En la línea 43 se utiliza
el constructor con dos argumentos de
JTextArea
, el cual especifi ca que el objeto
JTextArea
tiene
10
fi las y
15
columnas. En la línea 26 se especifi ca que
demo
debe mostrarse como el contenido predeterminado del objeto
JTextArea
. Un objeto
JTextArea
no proporciona barras de desplazamiento si no puede mostrar su contenido
completo. Por lo tanto, en la línea 27 se crea un objeto
JScrollPane
, se inicializa con
areaTexto1
y se adjunta
al contenedor
cuadro
. En un objeto
JScrollPane
aparecen de manera predeterminada las barras de desplaza-
miento horizontal y vertical, según sea necesario.
En las líneas 29 a 41 se crea el objeto
JButton
llamado
botonCopiar
con la etiqueta
"Copiar>>>"
, se
agrega
botonCopiar
al contenedor
cuadro
y se registra el manejador de eventos para el evento
ActionEvent
de
botonCopiar
. Este botón proporciona el evento externo que determina cuándo debe copiar el programa el
texto seleccionado en
areaTexto1
a
areaTexto2
. Cuando el usuario hace clic en
botonCopiar
, la línea 38 en
actionPerformed
indica que el método
getSelectedText
(que hereda
JTextArea
de
JTextComponent
) debe
devolver el texto seleccionado de
areaTexto1
. Para seleccionar el texto, el usuario arrastra el ratón sobre el tex-
to deseado para resaltarlo. El método
setText
cambia el texto en
areaTexto2
por la cadena que devuelve
get-
SelectedText
.
En las líneas 43 a 45 se crea
areaTexto2
, se establece su propiedad editable a
false
y se agrega al contenedor
box
. En la línea 47 se agrega
cuadro
al objeto
JFrame
. En la sección 11.17 vimos que el esquema predeterminado
de un objeto
JFrame
es
BorderLayout
, y que el método
add
adjunta de manera predeterminada su argumento a
la región
CENTER
de este esquema.
Algunas veces es conveniente, cuando el texto llega al lado derecho de un objeto
JTextArea
, hacer que se
recorra a la siguiente línea. A esto se le conoce como
envoltura de línea
. La clase
JTextArea
no envuelve líneas
de manera predeterminada.
Figura 11.48
| Copiado de texto seleccionado, de un objeto
TextAreaFrame
.
1
// Fig. 11.48: DemoAreaTexto.java
2
// Copia el texto seleccionado de un área de texto a otra.
3
import
javax.swing.JFrame;
4
5
public class
DemoAreaTexto
6
{
7
public static void
main( String args[] )
8
{
9
MarcoAreaTexto marcoAreaTexto =
new
MarcoAreaTexto();
10
marcoAreaTexto.setDefaultCloseOperation(
JFrame.EXIT_ON_CLOSE
);
11
marcoAreaTexto.setSize(
425
,
200
);
// establece el tamaño del marco
12
marcoAreaTexto.setVisible(
true
);
// muestra el marco
13
}
// fin de main
14
}
// fin de la clase DemoAreaTexto
11.19 JTextArea
525
11_MAQ_CAP_11.indd525
4/19/081:26:24AM