Вы находитесь на странице: 1из 8

COMPONENTES SWING

Todos los componentes Swing son objetos de clases derivadas de la


clase JComponent,
que a su vez se deriva de la clase
java.awt.Component, lo que pone de manifiesto que Swing se deriva de
AWT. Para combinar stos formando una interfaz grfica, Swing
provee, adems, los contenedores de nivel alto JWindow, JFrame,
JDialog y JApplet que puede observar en la jerarqua de clases de Java
mostrada a continuacin:

java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
java.awt.Panel
java.applet.Applet
javax.swing.JApplet
java.awt.Window
java.awt.Dialog
javax.swing.JDialog
java.awt.Frame
javax.swing.JFrame
javax.swing.JWindow

JWindow: es una ventana sin barra de ttulo y sin los botones que
permiten su manipulacin, que puede visualizarse en cualquier parte del
escritorio.
JFrame: es una ventana con barra de ttulo y con los botones que
permiten su manipulacin que puede visualizarse en cualquier sitio del
escritorio.
JDialog: permite visualizar la caja de dialogo
JApplet permite crear un applet swing : programa que visualiza una
interfaz grfica en el contexto de una pgina web.

ARQUITECTURA MODELO -VISTA-CONTROLADOR


Swing basa sus componentes en la arquitectura modelo-vistacontrolador (MVC). El modelo se corresponde con el estado del
componente (recuerde que el estado de un objeto lo definen todos sus
datos miembros); por ejemplo, en una lista el modelo est definido por
todos los elementos de la misma en cambio, en una caja de texto el

modelo est definido por el documento de texto. La vista se refiere a


cualquier perspectiva de ese modelo; por ejemplo, en una lista la vista
es la representacin grfica de la misma, y en una caja de texto, dem. Y
el controlador (manejador de eventos) es el responsable de la
actualizacin del modelo.

MANEJADORES DE EVENTOS DE SWING


Este apartado nos vamos a limitar a exponer
manejadores de eventos soportados por swing.
Java 2 proporciona varios manejadores de
cuales maneja un tipo particular de eventos.

eventos,

brevemente los
cada uno de los

Los manejadores de eventos que manipulan los tipos de eventos de la


figura anterior son objetos que sern implementados a partir de las
interfaces que se ex ponen a continuacin.

Todos los
eventos:

componentes swing soportan los

siguientes manejadores de

ComponentListener:
Permite
manejar
los
eventos
de
tipo
ComponentEvent generados por los componentes cuando cambian su
tamao, posicin o visibi lidad.
FocusListener. Permite manejar los eventos de tipo FocusEvent
generados por los componentes cuando ganan o pierden el foco. Cuando
un componente gana el foco est en condiciones de recibir entradas
desde el teclado.
KeyListener. Permite manejar los eventos de tipo KeyEvent
generados por el componente que tiene el foco, cuando recibe
entradas desde el teclado.
MouseListener. Permite manejar los eventos de tipo MouseEvent
generados por los componentes cuando el cursor del ratn entra en su
rea o sale de ella, y cuando el usuario pulsa y suelta un botn del
ratn.
MouseMotionListener. Permite manejar los eventos tipo MouseEvent
gene rados por un componente cuando el ratn se mueve sobre l (el
adaptador MouselnputAdapter implementa tanto MouseListener como
MouseMotion Listener).

JERARQUA DE COMPONENTES DE UNA APLICACIN

Los objetos fundamentales que intervienen en una aplicacin en


ejecucin son: la ventana principal o contenedor del nivel superior
(objeto JFrame), un contenedor del nivel intermedio (objeto JPanel) y
los componentes atmicos u objetos no destinados a contener a otros
componentes (por ejemplo, un objeto JLabcl). Estos componentes estn
dispuestos jerrquicamente segn se explica a continuacin.

CAJAS DE TEXTO, ETIQUETAS Y BOTONES


Los componentes ms comunes en una aplicacin swing son las cajas de
texto, las etiquetas y los botones de pulsacin. Las cajas de texto,
componentes JTextField o JTextArea, son particularmente importantes
porque permiten realizar la entrada de datos para una aplicacin y
visualizar los resultados producidos por la misma. Las etiquetas,
componentes JLabel, son cajas de texto no modificables por el usuario.
Su finalidad es informar al usuario de qu tiene que hacer y cul es la
funcin de cada componente. Por ltimo, un botn de pulsacin,
componente de la clase JButton, permite al usuario ejecutar una accin
cuando sea preciso. Las clases mencionadas, que proporcionan la
funcionalidad para los componentes descritos, se derivan, segn se
expuso anteriormente, directa o indirectamente de la clase JComponent,
que aporta la funcionalidad comn a todos estos componentes.

Como ejemplo, piense en una aplicacin que permita convertir grados


centgrados a Fahrenheit, y viceversa. Esta aplicacin requiere una
interfaz con al me nos dos cajas de texto, de manera que cuando el
usuario introduzca en una caja una temperatura en grados centgrados,
en la otra se visualice la temperatura equivalente en grados Fahrenheit,
y cuando en esta otra caja se introduzca una temperatura en grados
Fahrenheit, en la primera se visualice la temperatura correspondiente en
grados centgrados.

Tecla de acceso
Se puede observar en el ttulo del botn Aceptar que la letra A aparece
subrayada.
Esto significa que el usuario podr tambin ejecutar la accin
especificada por el botn, pulsando las teclas Alt+A. Esta asociacin
tecla-componente recibe el nombre de nemnico y se realiza mediante
la sentencia siguiente: jbtAceptar.setMnemonic('A'l; //el argumento
puede ser 65 o 'A'

Botn por omisin


Si echa un vistazo a los botones de las ventanas de su sistema
operativo, observar que, generalmente, hay un botn con un borde
ms resaltado que los dems; se trata del botn por omisin: botn que
ser automticamente pulsado cuando se pulse la tecla Entrar. Para
informar al panel raz del que ser el botn por omisin de entre todos
los que contenga, hay que invocar a su mtodo setDefaultButton:
getRootPane().setDefaultButton(jbtAceptar);

Responder a los eventos

Ya tenemos el formulario con sus componentes. El paso siguiente es


hacer que estos componentes respondan a las solicitudes que el usuario
haga a la aplicacin, lo que requiere unir a los mismos el cdigo que
debe ejecutarse como respuesta.
Para hacer que una aplicacin responda a eventos, uniremos a cada uno
de los componentes el cdigo con el que deben responder a cada evento
de inters que se produzca sobre ellos. Este cdigo asociado con cada
componente y escrito para un determinado evento o suceso recibe el
nombre de mtodo conducido por un evento. En nuestro ejemplo estos
mtodos sern miembros de la clase Conver derivada deJFrame.

Enfocar un objeto
Cuando un componente posee el punto de insercin, se dice que dicho
componente est enfocado o que tiene el foco.
Un usuario de una aplicacin puede enfocar un determinado
componente haciendo clic sobre l, o bien pulsando la tecla Tab una o
ms veces hasta situar el foco sobre l. As mismo, un componente
tambin puede ser enfocado desde la propia aplicacin; por ejemplo, si
usted quiere que el componente jtfGradosC quede enfocado cuando la
ventana se visualice, puede hacerlo de dos maneras:
l. Invocando al mtodo requestFocus para el componente que requiere el
foco una vez abierta la ventana. Este proceso puede realizarse como
respuesta al mensaje "ventana abierta" (window opened) que se genera
una vez mostrada la ventana.

INTERCEPTAR LA TECLA PULSADA

La aplicacin Conver, expuesta anteriormente, requiere el botn por


omisin Aceptar para que cuando el usuario modifique el contenido de
una caja de texto y pulse la tecla Entrar, se realice la modificacin
correspondiente en la otra caja. Seguramente usted habr pensado en
eliminar el botn Aceptar y en su lugar interceptar la tecla Entrar,
instante en el que hay que realizar la conversin. Una forma de
interceptar la tecla Entrar es asociando un manejador de tipo
ActionListener con el componente de texto que recibe tal evento, ya que
al pulsar la tecla Entrar sobre uno de estos componentes se produce un
evento de accin.
Comparando este nuevo diseo con el anterior, ahora no necesitamos
asociar con las cajas de texto un manejador de eventos de tipo
KeyListener, sino uno de tipo ActionListener para interceptar la pulsacin
de la tecla Entrar que el usuario realizar despus de escribir la cantidad
que desea convertir.
Para ello, aada el cdigo indicado a continuacin al mtodo
initComponents, en el que se puede observar que la respuesta a la
pulsacin de la tecla Entrar vendr dada por la ejecucin del mtodo
jtfGradosActionPerformed.

VALIDAR UN CAMPO DE TEXTO


Validar un campo de texto equivale a restringir su contenido al conjunto
de caracteres vlidos para dicho campo. Si la validacin de los datos se
hace despus de pulsar la tecla Entrar en el componente de texto (se
produce un evento de accin: ActionEvent), el campo podra contener
datos no vlidos, pero podran ser validados antes de utilizarlo. En
cambio, si la validacin se hace verificando la validez de cada tecla
pulsada (eventos de pulsacin: KeyEvent), el campo de texto ya estar
validado una vez finalizada la entrada.

CREAR UN CAMPO DE TEXTO VALIDADO


Est arquitectura, para crear un campo validado hay que interceptar
cada pulsacin antes de que el carcter sea insertado en el modelo, con
el fin de insertar slo los caracteres vlidos. De esta forma la vista nunca
podr mostrar datos no vlidos.
El modelo (contenedor de texto) de un componente de texto es un
objeto que implementa la interfaz Document. En el nivel ms elemental,
el texto es modelado como una secuencia lineal de caracteres. Este

modelo es creado por el mtodo createDefaultModel de JTextField cada


vez que se crea un objeto de esta clase.

El mtodo createDefaultModel retoma de forma predeterminada un


objeto javax.swing.text.PlainDocument que se corresponde con el
contenedor de texto; esto es, con el modelo. Entonces, lo que podemos
hacer es derivar una clase de JTextField y sobrescribir el mtodo
createDefaultModel para que devuelva un modelo personalizado.
Lgicamente el modelo personalizado ser un objeto de una clase
derivada de PlainDocument

Ejemplo:

Вам также может понравиться