Está en la página 1de 11

AWT y Swing Entorno grfico: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

Tema 13. AWT y Swing

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-VistaControlador), aunque Swing tambin proporciona cosas nuevas como rboles, pestaas, etc.

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

Tema 13. AWT y Swing

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.

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.

Tema 13. AWT y Swing

Tema 13. AWT y Swing

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,

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)
7 Tema 13. AWT y Swing 8

Tema 13. AWT y Swing

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 9

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 10

Containers de Swing
Object Component getGraphics() Container Graphics

Jerarqua
Object Component java.awt Container javax.swing

Box
Panel Window

JComponent

JAbstractButton
Applet Frame Dialog

JList

JPanel

JTextComponent

JLabel

JApplet getContentPane() yourApplet

JFrame

JDialog

JWindow

JButton

JMenuItem

JTextField

JTextArea

yourFrame

yourDialog

yourWindow

Tema 13. AWT y Swing

11

Tema 13. AWT y Swing

12

Componentes
Hay Componentes con entrada de tipo notextual como: los botones de pulsacin: Button las listas: List botones de marcacin: Checkbox botones de seleccin: Choice botones de comprobacin: CheckboxGroup

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
13 Tema 13. AWT y Swing 14

Tema 13. AWT y Swing

Componentes
Incluso los Contenedores Panel Window Dialog Frame tambin pueden considerarse como Componentes.

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

15

Tema 13. AWT y Swing

16

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); }

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.

Tema 13. AWT y Swing

17

Tema 13. AWT y Swing

18

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

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

19

Tema 13. AWT y Swing

20

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

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

Tema 13. AWT y Swing

21

setLabel()Fija el ttulo o etiqueta visual del botn Tema 13. AWT y Swing

22

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 tratamientoTema de eventos 13. AWT y Swing 23

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){ ... } } );

Tema 13. AWT y Swing

24

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 25

Choice
class MiActionListener implements ActionListener { // Se sobrescribe el mtodo actionPerformed() del interfaz ActionListener void actionPerformed( ActionEvent evt ) { ...

Tema 13. AWT y Swing

26

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

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 27 Tema 13. AWT y Swing 28

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

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 Tema 13. AWT y Swing 30 men.

Tema 13. AWT y Swing

29

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 31

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
32

Tema 13. AWT y Swing

ContentPane
JFrame

JFrame
import java.awt.*; import java.awt.event.*; import javax.swing.*; private static void createAndShowGUI() {

Content Pane

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);

Aadir componentes

} public static void main(String[] args) { javax.swing.SwingUtilities.invokeLater(new Runnable() {public void run() { createAndShowGUI();

frame.getContentPane().add( new JPanel(),BorderLayout.CENTER );


Tema 13. AWT y Swing 33

}});}}

Tema 13. AWT y Swing

34

JFrame
setSize

Hola Mundo
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(); } }); }} Tema 13. AWT y Swing 36

setCursor

JFrame

setTitle

setVisible

Tema 13. AWT y Swing

35

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 37

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

38

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 39

Layout

Tema 13. AWT y Swing

40

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.

FlowLayout
FlowLayout miFlowLayout = new FlowLayout( FlowLayout.CENTER,3,3 ); miFrame.setLayout( miFlowLayout ); Button boton1 = new Button( "Primero" ); ... miFrame.add( boton1 ); ....

Tema 13. AWT y Swing

41

Tema 13. AWT y Swing

42

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 43

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 44

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 );

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

45

Tema 13. AWT y Swing

46

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" );

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
Tema 13. AWT y Swing 48

Tema 13. AWT y Swing

47

Bordes
La clase JComponent tambin contiene un mtodo llamado setBorder(), que permite colocar diferentes bordes a un componente visible.

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 50

Tema 13. AWT y Swing

49

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

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

51

Tema 13. AWT y Swing

52

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.

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
Tema 13. AWT y Swing 54

Tema 13. AWT y Swing

53

Dialogos de Opcin
int res = JOptionPane.showConfirmDialog( this,"Responda Si o No", "Dialogo de Opcin",JOptionPane.YES_NO_OPTION ); if( res == JOptionPane.YES_OPTION )....

Combo box

Tema 13. AWT y Swing

55

Tema 13. AWT y Swing

56

Slider

Spinner

Tema 13. AWT y Swing

57

Tema 13. AWT y Swing

58

FileChooser

Eventos
Event

Source

Listener

Tema 13. AWT y Swing

59

Tema 13. AWT y Swing

60

Eventos
java.util
EventObject

Interface Listener
Listener Interface
java.awt.event
ActionEvent ContainerEvent
ActionListener ActionEvent actionPerformed()

Event

Listener Methods

AdjustmentEvent

FocusEvent KeyEvent

java.awt
AWTEvent ComponentEvent InputEvent

AdjustmentListener

AdjustmentEvent

adjustmentValueChanged() componentHidden() componentMoved() componentResized() componentShown() componentAdded() componentRemoved() focusGained() focusLost()

ComponentListener

ComponentEvent

MouseEvent ItemEvent PaintEvent


ContainerListener ContainerEvent

TextEvent

WindowEvent
FocusListener FocusEvent

Tema 13. AWT y Swing

61

Tema 13. AWT y Swing

62

Interface Listener
Listener Interface Event Listener Methods

Interface Listener
Listener Interface Event Listener Methods

KeyListener

KeyEvent

keyPressed() keyReleased() keyTyped()

TextListener

TextEvent

textValueChanged()

MouseListener

MouseEvent

mouseClicked() mouseEntered() mouseExited() mousePressed() mouseReleased()

ItemListener

ItemEvent

itemStateChanged()

WindowListener

WindowEvent

MouseMotionListener

MouseEvent

mouseDragged() mouseMoved()

windowActivated() windowClosed() windowClosing() windowDeactivated() windowDeiconified() windowIconified() windowOpened()

Tema 13. AWT y Swing

63

Tema 13. AWT y Swing

64

Frames cerrables
JFrame extends MyCloseableJFrame WindowListener implements MyWindowListener

Tema 13. AWT y Swing

65

También podría gustarte