Está en la página 1de 11

1

Tema 13. AWT y Swing 1


Entorno grfico:AWT y Swing
Tema 13. AWT y Swing 2
AWT y Swing
Se trata de bibliotecaS de clases Java
para el desarrollo de Interfaces de
Usuario Grficas.
Su presentacin visual es independiente
de la plataforma en que se ejecute el
applet o la aplicacin
Tema 13. AWT y Swing 3
AWT y Swing
. Swing simplemente extiende el AWT
aadiendo un conjunto de componentes,
JComponents, y sus clases de soporte.
Hay un conjunto de componentes de
Swing que son anlogos a los de AWT, y
algunos de ellos participan de la
arquitectura MVC (Modelo-Vista-
Controlador), aunque Swing tambin
proporciona cosas nuevas como rboles,
pestaas, etc.
Tema 13. AWT y Swing 4
Soporte Java para el
desarrollo de interface grfica
Swing
AWT
Soporte nativo para GUIs
Swing utiliza el
modelo de
eventos basado
en delegacin de
AWT (definido a
partir de Java 1.1)
Tema 13. AWT y Swing 5
AWT y Swing
La estructura bsica del AWT se basa en
Componentes y Contenedores. Estos
ltimos contienen Componentes
posicionados a su respecto y son
Componentes a su vez, de forma que los
eventos pueden tratarse tanto en
Contenedores como en Componentes.
Tema 13. AWT y Swing 6
AWT y Swing
El diseo de toda interfaz conlleva:
Decidir la estructura de la interfaz
Qu componentes grficos se van a utilizar, y
cmo se van a relacionar estos componentes)
Decidir la disposicin (layout) de los
componentes
sirven para organizar los componentes
contenidos en los mismos.
Decidir el comportamiento de la
interfaz: gestin de eventos
Algunos componentes son controles: permiten
reaccionar ante eventos del usuario. El
comportamiento se especifica programando las
respuestas a dichos eventos.
2
Tema 13. AWT y Swing 7
AWT Y Swing
Todava no hay herramientas de
composicin visual, corriendo por cuenta
del programador el encaje de todas las
piezas, as como la seguridad de
tratamiento de los eventos adecuados.
Con Swing se va un paso ms all, ya
que todos los JComponentes son
subclases de Container, lo que hace
posible que componentes de Swing
puedan contener otros componentes,
Tema 13. AWT y Swing 8
AWT Y Swing
Los Contenedores contienen
Componentes, que son los controles
bsicos
No se usan posiciones fijas de los
Componentes, sino que estn situados a
travs de una disposicin controlada
(layouts)
Es bastante dependiente de la mquina
en que se ejecuta la aplicacin (no
puede asumir que un dilogo tendr el
mismo tamao en cada mquina)
Tema 13. AWT y Swing 9
Componentes
Un interfaz grfico est construida en
base a elementos grficos bsicos, los
Componentes. Tpicos ejemplos de estos
Componentes son los botones, barras de
desplazamiento, etiquetas, listas, cajas
de seleccin o campos de texto.
Los Componentes permiten al usuario
interactuar con la aplicacin y
proporcionar informacin desde el
programa al usuario sobre el estado del
programa. En el AWT, todos los
Componentes son instancias de la clase
Component.
Tema 13. AWT y Swing 10
Contenedores
Los Componentes se agrupan dentro de
Contenedores.
Los Contenedores contienen y
organizan la situacin de los
Componentes; adems, los
Contenedores son en s mismos
Componentes y como tales pueden ser
situados dentro de otros Contenedores.
Tambin contienen el cdigo necesario
para el control de eventos.
En el AWT, todos los Contenedores son
instancias de la clase Container
Tema 13. AWT y Swing 11
Containers de Swing
Object
Component
Container
Panel Window
yourApplet
JApplet
Applet Frame Dialog
yourFrame yourDialog
JFrame JDialog
Graphics
getGraphics()
getContentPane()
yourWindow
JWindow
Tema 13. AWT y Swing 12
Jerarqua
Object
Component
Container
JComponent
JPanel JLabel JList JAbstractButton JTextComponent
javax.swing
java.awt
Box
JButton JMenuItem JTextField JTextArea
3
Tema 13. AWT y Swing 13
Componentes
Hay Componentes con entrada de tipo no-
textual como:
los botones de pulsacin: Button
las listas: List
botones de marcacin: Checkbox
botones de seleccin: Choice
botones de comprobacin:
CheckboxGroup
Tema 13. AWT y Swing 14
Componentes
Hay Componentes con entrada de tipo
textual como:
campos de texto: TextField
las reas de texto TextArea
las etiquetas:Label
Y otros Componentes como:
las barras de desplazamiento: Scrollbar
zonas de dibujo: Canvas
Tema 13. AWT y Swing 15
Componentes
Incluso los Contenedores
Panel
Window
Dialog
Frame
tambin pueden considerarse como
Componentes.
Tema 13. AWT y Swing 16
Mostrando el
Contenedor en el Frame
Ejemplo en un contenedor Frame:
public class Proy_Frame extends Frame {
Button apilaBoton =new Button("Apila");
En su contructor:
apilaBoton.setBounds(10,100,100,40);
add(apilaBoton);
Tema 13. AWT y Swing 17
Mostrando el
Contenedor en el Frame
El contenedor mostrar el boton:
public static void main(String[] args) {
Proy_Frame frame = new Proyecto_FrameFrame();
frame.setVisible(true);
}
Tema 13. AWT y Swing 18
Campos de Texto
Para la entrada directa de datos se suelen
utilizar los campos de texto, que aparecen en
pantalla como pequeas cajas que permiten
al usuario la entrada por teclado de una lnea
de caracteres.
La clase TextField extiende a la clase
TextComponent, que extiende a su vez, a la
clase Component.
4
Tema 13. AWT y Swing 19
Areas de Texto
Un rea de texto (TextArea) es una zona multilnea
que permite la presentacin de texto, que puede ser
editable o de slo lectura.
Al igual que la clase TextField, esta clase extiende la
clase TextComponent
Tema 13. AWT y Swing 20
Areas de Texto
TextArea miAreaTexto = new TextArea(
"",5,20,TextArea.SCROLLBARS_VERTICAL_O
NLY );
for( int i=0; i < 10; i++ )
miAreaTexto.append( "linea "+i+"\n" );
Tema 13. AWT y Swing 21
Etiquetas de Texto
Una etiqueta (Label) proporciona una
forma de colocar texto esttico en un
panel, para mostrar informacin al usuario.
La clase Label extiende la clase
Component
Tema 13. AWT y Swing 22
Button
La clase Button dispone de todos los
mtodos heredados de las clases
Component y Object, y:
addActionListener() Aade un receptor
de eventos de tipo Action
getLabel()Devuelve la etiqueta o ttulo
del botn
removeActionListener()Elimina el
receptor de eventos para que el botn
deje de realizar accin alguna
setLabel()Fija el ttulo o etiqueta visual
del botn
Tema 13. AWT y Swing 23
Eventos
Java es, por diseo, un lenguaje multiproceso:
en un programa Java pueden existir (y de
hecho existen) simultneamente mltiples
hilos de ejecucin (threads) concurrentes
Uno de estos hilos es el hilo de tratamiento
de eventos
En las aplicaciones con GUI, el hilo principal
se limita a construir la estructura de la GUI, a
asociar los oyentes adecuados
pero la aplicacin en s no termina, puesto
que todava queda, al menos, un hilo con vida:
el de tratamiento de eventos
Tema 13. AWT y Swing 24
Eventos de Button
Para aadir el cdigo a ejecutar cuando
se pulse el botn (en el constructor de
su contenedor):
apilaBoton.addActionListener (
new ActionListener() {
public void actionPerformed(ActionEvent e){
...
}
}
);
5
Tema 13. AWT y Swing 25
Choice
Los botones de seleccin (Choice)
permiten el rpido acceso a una lista de
elementos, presentndose como ttulo el
item que se encuentre seleccionado.
La clase Choice extiende la clase
Component e implementa el interfaz
ItemSelectable, que es el interfaz que
mantiene un conjunto de items en los
que puede haber, o no, alguno
seleccionado.
Adems, esta clase proporciona el
mtodo addItemListener(),
Tema 13. AWT y Swing 26
Choice
class MiActionListener implements ActionListener {
// Se sobrescribe el mtodo actionPerformed() del
interfaz ActionListener
void actionPerformed( ActionEvent evt ) { ...
}
Tema 13. AWT y Swing 27
Canvas
Una zona de dibujo, o lienzo (Canvas), es
una zona rectangular vaca de la pantalla
sobre la cual una aplicacin puede pintar, o
desde la cual una aplicacin puede recuperar
eventos producidos por acciones del usuario.
canvas es til a la hora de presentar
imgenes o grficos en pantallaCuando se
implementa una subclase de la clase Canvas
Tema 13. AWT y Swing 28
Canvas
hay que prestar atencin en implementar los
mtodos minimumSize() y preferredSize()
para reflejar adecuadamente el tamao de
canvas; porque dependiendo del layout que
utilice el contenedor del canvas, el canvas
puede llegar a ser demasiado pequeo,
incluso invisible.
La clase Canvas es muy simple, consiste en
un solo constructor sin argumentos y dos
mtodos, que son:
AddNotify()Crea el observador del canvas
paint( Graphics )Repinta el canvas
Tema 13. AWT y Swing 29
Barra de
Desplazamiento
Las barras de desplazamiento (Scrollbar)
se utilizan para permitir realizar ajustes de
valores lineales en pantalla, porporcionan
una forma de trabajar con rangos de
valores o de reas
Tema 13. AWT y Swing 30
Menus
MenuComponent, es
la superclase de todos
los Componentes
relacionados con mens.
MenuItem, representa una opcin en un
men.
Menu, es un Componente de una barra de
men.
MenuBar, encapsula el concepto de una
barra de men en un Frame.
CheckboxMenuItem, genera una caja de
seleccin que representa una opcin en un
men.
6
Tema 13. AWT y Swing 31
Menus
MenuComponent, es la superclase de
todos los Componentes relacionados con
mens.
MenuItem, representa una opcin en un
men.
Menu, es un Componente de una barra de
men.
MenuBar, encapsula el concepto de una
barra de men en un Frame.
CheckboxMenuItem, genera una caja de
seleccin que representa una opcin en un
men.
....
Tema 13. AWT y Swing 32
JFrame
Toda aplicacin Swing tiene, al menos, un
contenedor raz (una ventana)
JFrame incluye una serie de elementos:
Los contenidos se
aaden en el panel de
contenidos (content
pane) accesible a
travs del mtodo
getContentPane (por
defecto, un objeto de
tipo Jpane, aunque
puede cambiarse con
setContentPane).
La barra de men
puede fijarse con
setJMenuBar
Tema 13. AWT y Swing 33
ContentPane
Content
Pane
JFrame
Aadir
componentes
frame.getContentPane().add( new JPanel(),BorderLayout.CENTER );
Tema 13. AWT y Swing 34
JFrame
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
private static void createAndShowGUI() {
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame("FrameDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel emptyLabel = new JLabel("");
emptyLabel.setPreferredSize(new Dimension(175, 100));
frame.getContentPane().add(emptyLabel,BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {public void run() {
createAndShowGUI();
}});}}
Tema 13. AWT y Swing 35
JFrame
JFrame setCursor
setSize
setVisible
setTitle
Tema 13. AWT y Swing 36
import javax.swing.*;
public class HelloWorldSwing {
private static void createAndShowGUI() {
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame("HelloWorldSwing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel label = new JLabel("Hello World");
frame.getContentPane().add(label);
frame.pack();
frame.setVisible(true); }
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI(); } });
}}
Hola Mundo
7
Tema 13. AWT y Swing 37
Posicionamiento
Absoluto
Los Componentes se pueden colocar en
Contenedores utilizando cualquiera de los
Layouts, ms seguros ante cambios de
resolucin, o utilizando posicionamiento
absoluto.
La clase Component proporciona mtodos
para especificar la posicin y tamao de un
Componente en coordenadas absolutas
indicadas en pixels:
setBounds( int,int,int,int );
setBounds( Rectangle );
miBoton.setBounds( new Rectangle( 25,20,100,75 ) );
Tema 13. AWT y Swing 38
Layout
Los layout ayudan a adaptar los
diversos Componentes que se desean
incorporar a un Panel, es decir,
especifican la apariencia que tendrn
los Componentes a la hora de colocarlos
sobre un Contenedor, controlando
tamao y posicin (layout)
automticamente.
Tema 13. AWT y Swing 39
Layout
En el tratamiento de los Layouts se
utiliza un mtodo de validacin, de
forma que los Componentes son
marcados como no vlidos cuando un
cambio de estado afecta a la geometra
o cuando el Contenedor tiene un hijo
incorporado o eliminado.
La validacin se realiza
automticamente cuando se llama a
pack() o show().
Tema 13. AWT y Swing 40
Layout
Tema 13. AWT y Swing 41
FlowLayout
Es el ms simple y el que se utiliza por
defecto en todos los Paneles si no se
fuerza el uso de alguno de los otros.
Los Componentes aadidos a un Panel
con FlowLayout se encadenan en
forma de lista, de izquierda a derecha,
y se puede seleccionar el espaciado
entre cada Componente.
Tema 13. AWT y Swing 42
FlowLayout
FlowLayout miFlowLayout = new FlowLayout(
FlowLayout.CENTER,3,3 );
miFrame.setLayout( miFlowLayout );
Button boton1 = new Button( "Primero" );
...
miFrame.add( boton1 );
....
8
Tema 13. AWT y Swing 43
BorderLayout
La composicin BorderLayout (de
borde) proporciona un esquema ms
complejo de colocacin de los
Componentes en un panel.
La composicin utiliza cinco zonas para
colocar los Componentes sobre ellas:
Norte, Sur, Este, Oeste y Centro.
Es el layout o composicin que se
utilizan por defecto Frame y Dialog.
Tema 13. AWT y Swing 44
BorderLayout
//En el constructor de un Frame
BorderLayout miLayout = new BorderLayout();
miLayout.setVgap( 30 );
miLayout.setHgap( 30 );
this.setLayout( miLayout );
this.setTitle( "Ejemplo de BorderLayout" );
this.setSize( 300,300 );
MiCanvas miObjCanvas = new MiCanvas();
this.add( miObjCanvas,"Center" );
Tema 13. AWT y Swing 45
BorderLayout
this.add( new Button( "Norte" ),"North" );
this.add( new Button( "Sur" ),"South" );
this.add( new Button( "Este" ),"East" );
this.add( new Button( "Oeste" ),"West" );
// Ahora se podrn ver
this.setVisible( true );
Tema 13. AWT y Swing 46
GridLayout
La composicin GridLayout
proporciona gran flexibilidad para situar
Componentes.
El controlador de posicionamiento se
crea con un determinado nmero de
filas y columnas y los Componentes van
dentro de las celdas de la tabla as
definida.
Tema 13. AWT y Swing 47
GridLayout
GridLayout miGridLayout = new GridLayout(
2,3 );
panel1.setLayout( miGridLayout );
for( int i=0; i < 6; i++)
panel1.add( new Button( "Boton"+i ) );
miFrame.add( panel1,"North" );
Tema 13. AWT y Swing 48
Componentes de Swing
Swing es paso adelante respecto al AWT.
Ahora los Componentes del interfaz
grfico son Beans y utilizan el nuevo
modelo de Delegacin de Eventos de
Java.
Swing est totalmente escrito en Java.
la navegacin con el teclado es
automtica
Para pasar de AWT a Swing suele bastar
con aadir una "J" al componente
9
Tema 13. AWT y Swing 49
Bordes
La clase JComponent tambin contiene un
mtodo llamado setBorder(), que
permite colocar diferentes bordes a un
componente visible.
Tema 13. AWT y Swing 50
Bordes
En el constructor de un JPanel
import com.sun.java.swing.border.*;
setLayout( new GridLayout( 2,4 ) );
add( creaBorde( new TitledBorder("Titulo") ) );
add( creaBorde( new EtchedBorder() ) );
add( creaBorde( new LineBorder(Color.blue) ) );
add( creaBorde( new
MatteBorder(5,5,30,30,Color.green) ) );
add( creaBorde( new BevelBorder(BevelBorder.RAISED)
) );
...
Tema 13. AWT y Swing 51
JButton
El JButton parece igual que el botn que
hay en el AWT, pero se pueden hacer
muchas ms cosas con l.
Todos los botones, adems, tienen ahora
la posibilidad de incorporar imgenes a
travs del objeto Icon
Tema 13. AWT y Swing 52
JLabel
En Swing, al derivar de JComponent, la
clase JLabel implementa todas las
caractersticas inherentes a los
componentes Swing, como pueden ser
los aceleradores de teclado, bordes, y
dems.
Icon imagen = new ImageIcon( "miDibujo.gif" );
JLabel etiq3 = new JLabel( "Etiqueta3",
imagen,SwingConstants.CENTER );
Tema 13. AWT y Swing 53
JList
Las lista y cajas "combo" en Swing
funcionan del mismo modo que lo hacan
en el AWT, aunque mejoran algunas
cosas.
Por ejemplo, JList tiene un constructor
al que se puede pasar un array de
objetos String para que los presente.
Tema 13. AWT y Swing 54
Dialogos
Swing tambin proporciona nuevos
modelos de dilogos predefinidos del
sistema, como son en dilogo de
seleccin de colores, el dilogo de
seleccin de ficheros, dilogos de aviso,
error y confirmacin, y algunos ms.
La apariencia es muy distinta a la que se
presentaba en el AWT en algunos casos,
por ejemplo en la seleccin de ficheros:El
objeto JFileChooser no abre ni salva
nada, sino que se limita a seleccionar el
nombre del fichero
10
Tema 13. AWT y Swing 55
Dialogos de Opcin
int res = JOptionPane.showConfirmDialog(
this,"Responda Si o No",
"Dialogo de Opcin",JOptionPane.YES_NO_OPTION );
if( res == JOptionPane.YES_OPTION )....
Tema 13. AWT y Swing 56
Combo box
Tema 13. AWT y Swing 57
Slider
Tema 13. AWT y Swing 58
Spinner
Tema 13. AWT y Swing 59
FileChooser
Tema 13. AWT y Swing 60
Eventos
Event
Source Listener
11
Tema 13. AWT y Swing 61
Eventos
EventObject
AWTEvent InputEvent
ActionEvent
AdjustmentEvent
ComponentEvent
ItemEvent
TextEvent
KeyEvent
MouseEvent
ContainerEvent
FocusEvent
PaintEvent
WindowEvent
java.util
java.awt
java.awt.event
Tema 13. AWT y Swing 62
Interface Listener
Listener Interface Event Listener Methods
ActionListener ActionEvent actionPerformed()
AdjustmentListener AdjustmentEvent adjustmentValueChanged()
ComponentListener ComponentEvent
componentHidden()
componentMoved()
componentResized()
componentShown()
ContainerListener ContainerEvent
componentAdded()
componentRemoved()
FocusListener FocusEvent
focusGained()
focusLost()
Tema 13. AWT y Swing 63
Interface Listener
Listener Interface Event Listener Methods
KeyListener KeyEvent
keyPressed()
keyReleased()
keyTyped()
MouseListener MouseEvent
mouseClicked()
mouseEntered()
mouseExited()
mousePressed()
mouseReleased()
MouseMotionListener MouseEvent
mouseDragged()
mouseMoved()
Tema 13. AWT y Swing 64
Interface Listener
Listener Interface Event Listener Methods
TextListener TextEvent textValueChanged()
ItemListener ItemEvent itemStateChanged()
WindowListener WindowEvent
windowActivated()
windowClosed()
windowClosing()
windowDeactivated()
windowDeiconified()
windowIconified()
windowOpened()
Tema 13. AWT y Swing 65
Frames cerrables
JFrame WindowListener
MyCloseableJFrame MyWindowListener
extends implements

También podría gustarte