Está en la página 1de 50

Java GUI

UAMISoft

Alumnos y Proyectos

Profesionistas Capacitados y Productos de Calidad

UAMISoft 2007

Java GUI
Tecnologas
AWT (Abstract Window Toolkit) JFC (Java Foundation Classes). Mejor conocida como Swing SWT (Standard Widget Toolkit)

UAMISoft 2007

JFC y Swing
JFC: Java Foundation Classes
Ofrece elementos para la creacin de interfaces grficas (GUI, Graphical User Interface), adicionando funcionalidad e interaccin a aplicaciones en Java Dentro de estos elementos est Swing, que incluye componentes para el diseo de GUIs.

UAMISoft 2007

JFC: arquitectura

UAMISoft 2007

Swing: GUI elementos


Frames
JFrame JDialog

Componentes (widgets)
JComponent JLabel JTextField JButton JList

Panels
Layouts Boxes

UAMISoft 2007

Swing: GUI elementos

UAMISoft 2007

Swing: estructura

UAMISoft 2007

Swing: estructura

Swing: estructura

UAMISoft 2007

Swing: estructura

Swing: estructura
UAMISoft 2007

Swing: estructura

Swing: estructura
UAMISoft 2007

10

Swing
Cada programa con Swing GUI debe tener al menos un contenedor Swing de alto-nivel El contenedor agrupa a los componentes Swing necesarios para la interfaz grfica y su manejo de eventos. Existen tres contenedores Swing de alto-nivel, frecuentemente utilizados:
JFrame Jdialog Japplet (para applets)
UAMISoft 2007

11

Swing: contenedores de alto-nivel


Cada objeto Jframe implementa una sola ventana Cada objeto JDialog implementa a ventana secundaria (una ventana que depende de otra) Cada objeto JApplet implementa una ventana para el despliegue del applet dentro de la ventana del browser.

UAMISoft 2007

12

Swing: contenedores de alto nivel


Tienen un Content pane que contiene, directa o indirectamente, todos los componentes visibles (excepto mens y decoraciones de ventanas) Se consideran como raz de la jerarqua de contenido

UAMISoft 2007

13

Swing: contenedores de alto nivel

UAMISoft 2007

Jerarqua de contenidos

14

Swing: contenedores de alto nivel

UAMISoft 2007

15

Manejadores de distribucin (layouts)


Son interfaces que definen mtodos para posicionar dar tamao a objetos dentro de un contenedor. Java define varias implementaciones de manejadores. Controlan la colocacin geomtrica dentro de un contenedor.
16

UAMISoft 2007

Manejadores de distribucin (layouts)


Permiten dar formato a componentes en la pantalla en forma independiente de plataforma. Java ofrece cinco clases que implementan la interfaz LayoutManager definidos en el paquete AWT:
FlowLayout GridLayout BorderLayout CardLayout GridBagLayout

UAMISoft 2007

17

Componnentes, contenedores y manejadores de distribucin


Los contenedores pueden contener componentes o contenedores. Todos los contenedores se construyen con un manejador de distribucin de default que maneja las posiciones y formas de los componentes de los contenedores. La mayora de acciones ocurren entre componentes contenedores y sus manejadores de distribucin.
UAMISoft 2007

18

Cambio de manejador de distribucin


Para cambiar un manejador de un contenedor, primero dbemos crear uno nuevo. Despus invocamos al mtodo setLayout( ) del contenedor para asignarle el nuevo manejador.
JPanel p = new JPanel() ; p.setLayout( new FlowLayout() );

El manejador de distribucin debe establecerse antes de que algn componente se agregue al contenedor.
UAMISoft 2007

19

FlowLayout
Es el manejador de default para la clase JPanel. Al adicionar componentes, estos se colocan de izquierda a derecha (centrados) y de arriba hacia abajo, ajustndose al ancho del contenedor Son semejantes al formato justificado en un procesador de texto. Si el contenedor cambia su tamao, la distribucin de los componentes cambia basado en la nueva altura y en el ancho.
UAMISoft 2007

20

GridLayout
Los componentes se ordenan en renglones y columnas.
Si solo el nmero de renglones se especificado:
columnas=nmero de componentes / renglones

Si solo el nmero de columnas es especificado:


Renglones= nmero de componentes / volumnas

UAMISoft 2007

El nmero de columnas es ignorado, al menos que el nmero de renglones sea cero Los componentes son ajustados para llenar el espacio del rengln. 21

BorderLayout
Establece 5 reas para acomodar componentes. De acuerdo a su pocisin las reas son:
North, South, East, West y Center.

Cuando un componente se agrega, debe especificarse su lugar El orden en el que se agregan no importa. El rea del centro siempre sera reajustada para ser lo ms grande posible.
UAMISoft 2007

22

BorderLayout

UAMISoft 2007

23

Ejemplo
Clases y paquetes a emplear y nombre de la clase:
import import import import import import import java.awt.*; java.awt.event.*; javax.swing.JFrame; javax.swing.JButton; javax.swing.JMenuBar; javax.swing.JMenu; javax.swing.JMenuItem;

public class EjemploJFrame{


UAMISoft 2007

24

Ejemplo
Atributos, son contenedores:
private private private JFrame frame; JMenuBar mb; JMenu pm;

UAMISoft 2007

25

Ejemplo
Atributos, son contenedores:
Constructor, todo se realiza en l
public EjemploJFrame(){ // elemento de swing no se tiene en awt frame.setDefaultLookAndFeelDecorated(false); frame=new JFrame("Programacin Orientada a Objetos"); frame.setSize(600,400); // se obtiene el Pane contenedor y se le asigna layout Container contenedor=frame.getContentPane(); contenedor.setBackground(Color.blue);
UAMISoft 2007

contenedor.setLayout(new FlowLayout());

26

Ejemplo
Agregacin de componentes
mb=new JMenuBar(); JMenuItem mi= new JMenuItem("Abrir"); pm=new JMenu("Archivo"); pm.add(mi); mb.add(pm); frame.setJMenuBar(mb); contenedor.add(new JButton("Boton 1")); contenedor.add(new JButton("Boton 2")); contenedor.add(new JButton("Boton 3"));

UAMISoft 2007

27

Ejemplo
Inicio del JFrame
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE); frame.setVisible(true); } }

UAMISoft 2007

28

Diseo de interfaces grficas


Definir contenedores Definir componentes Definir la distribucin

UAMISoft 2007

29

Diseo de interfaces grficas: ejemplo

UAMISoft 2007

30

Diseo de interfaces grficas: ejemplo

UAMISoft 2007

31

Diseo de interfaces grficas: ejemplo

UAMISoft 2007

32

Diseo de interfaces grficas, ejemplo: estructura de rbol

UAMISoft 2007

33

Diseo de interfaces grficas: ejemplo

UAMISoft 2007

34

Eventos
Generados por acciones del usuario Cada vez que el usuario digita un carcter o se hace algo con el ratn, se genera un evento (un objeto Java) Cualquier objeto puede ser notificado de estos eventos
Debe implementar un tipo de oyente (Listener)

UAMISoft 2007

35

Eventos

UAMISoft 2007

36

Eventos

UAMISoft 2007

37

Interfaz Listener
Listener Interface ActionListener AdjustmentListener ComponentListener Event Listener ActionEvent AdjustmentEvent ComponentListener Mtodos actionPerformed() adjustmentValueChanged() componentHidden() componentMoved() componentResized() componentShown() componentAdded() componentRemoved() focusGained() focusLost()
38

ContainerListener FocusListener

ContainerEvent FocusEvent

UAMISoft 2007

Interfaz Listener
Listener Interface KeyListener MouseListener Event Listener KeyEvent MouseEvent Mtodos keyPressed() keyReleased() keyTyped() mouseClicked() mouseEntered() mouseExited() mousePressed() mouseReleased() mouseDragged() mouseMoved()
39

MouseMotionListener MouseEvent

UAMISoft 2007

Interfaz Listener
Listener Interface TextListener ItemListener WindowListener Event Listener TextEvent ItemEvent WindowEvent Mtodos textValueChanged() itemStateChanged() windowActivated() windowClosed() windowClosing() windowDeactivated() windowDeiconified() windowIconified() windowOpened()
40

UAMISoft 2007

Ejemplo con listener


Clases importadas
import java.awt.*; import java.awt.event.*; import javax.swing.JFrame; import javax.swing.JButton; import javax.swing.JMenuBar; import javax.swing.JMenu; import javax.swing.JMenuItem; import javax.swing.JTextArea; import javax.swing.JScrollPane; import javax.swing.JPanel;

UAMISoft 2007

41

Ejemplo con listener


La clase debe implementar respuesta a eventos Atributos que incluyen una JTextArea y un JscrollPane, en estos elemento se visualizan los efectos de eventos generados
public class EjemploJFrame implements ActionListener{ private JFrame frame; private JMenuBar mb; private JMenu pm; private JTextArea ta; private JScrollPane sp;
UAMISoft 2007

42

Ejemplo con listener


Parte del constructor
public EjemploJFrame(){ frame.setDefaultLookAndFeelDecorated(false); frame=new JFrame("Programacin Orientada a Objetos"); frame.setSize(600,400); // Obtiene el panel contenedor de JFrame Container contenedor=frame.getContentPane(); contenedor.setBackground(Color.blue); // Manejador de distribucin FlowLayout contenedor.setLayout(new FlowLayout());

UAMISoft 2007

43

Ejemplo con listener


Se crea una barra de men y componentes
mb=new JMenuBar(); JMenuItem mi= new JmenuItem("Abrir"); // Op1 sirve para identificar a la fuente del evento mi.setActionCommand("Op1"); // Al JmenuItem mi se le da a conocer su listener mi.addActionListener(this); // Se crea un menu se le agrega mi (JMenuItem) pm=new JMenu("Archivo"); pm.add(mi); // Se agrega el menu pm a la barra de men pm y esta al frame mb.add(pm); frame.setJMenuBar(mb);
UAMISoft 2007

44

Ejemplo con listener


Se agregan 3 botones con listener a contenedor
// Se agregan 3 botones al Panel principal "contenedor" JButton jb; // Primer boton con etiqueta Boton 1 jb=new JButton("Boton 1"); // Se asigna etiqueta de comando para identificar el evento jb.setActionCommand("b1"); // Se asigna texto de Tip jb.setToolTipText("Botn 1 de prueba"); // listener a botn 1 y se agrega al contenedor jb.addActionListener(this); contenedor.add(jb);
UAMISoft 2007

45

Ejemplo con listener


Se agregan 3 botones con listener a contenedor
// Se agregan 2 botones ms bajo el mismo esquema jb=new JButton("Boton 2"); jb.setActionCommand("b2"); jb.setToolTipText("Botn 2 de prueba"); jb.addActionListener(this); contenedor.add(jb); // Tercer botn jb=new JButton("Boton 3"); jb.setActionCommand("b3"); jb.setToolTipText("Botn 3 de prueba"); jb.addActionListener(this);
UAMISoft 2007

contenedor.add(jb);

46

Ejemplo con listener


Se crea un panel con BorderLayout
//Nuevo panel para incluir una rea de texto y un botn JPanel nuevoPanel = new JPanel(new BorderLayout()); nuevoPanel.setOpaque(true); //Se crea el botn OK con listener y se coloca al sur del panel nuevo jb=new JButton("OK"); jb.setActionCommand("ok"); jb.setToolTipText("Salir"); jb.addActionListener(this); nuevoPanel.add(jb, BorderLayout.SOUTH);
UAMISoft 2007

47

Ejemplo con listener


Se crea una rea de texto dentro de un panel con Scroll y se coloca al centro del nuevo panel
//Se crea una rea de texto con scroll. ta=new JTextArea(10,30); ta.setEditable(false); sp = new JscrollPane(ta); //Se coloca al centro dentro del panel. nuevoPanel.add(sp, BorderLayout.CENTER);

UAMISoft 2007

48

Ejemplo con listener


Se agrega el nuevo panel al panel contenedor, se define la opcin de cierre de la ventana del frame y se hace visible la aplicacin
contenedor.add(contentPane); frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE); frame.setVisible(true); } //Fin del constructor de la clase EjemploFrame

UAMISoft 2007

49

Ejemplo con listener


Mtodo actionPerformed() encargado de responder al los eventos generados por los elementos grficos
public void actionPerformed(ActionEvent e){ //muestra en el rea de texto los parmetros del evento ta.append(e.paramString()+'\n'); //Si se presion el botn OK termina el programa if("ok".equals(e.getActionCommand())){ System.exit(0); } }//Fin del mtodo actionPerformed() }//Fin de la clase EjemploFrame 50

UAMISoft 2007