Está en la página 1de 18

Java - Interfaz Grfico de Usuario (GUI) Creacin de interfaces con JFC/Swing [IV]

La Geb de Joaqun Programacin JAVA INTERFAZ GRFICO DE USUARIO

4 - Creacin de interfaces con JFC/Swing [IV]


Referencia Bibliogrfica Autor Adolfo Aladr Garca Publicado en la revista Solo Programadores num. 120 Ejemplos Copiados del artculo

Sumario En esta ltima entrega se presentarn algunos de los componentes ms comnmente empleados en la creacin de interfaces grficos, prestando especial atencin a aquellos que como contendores permiten organizar y agrupar los elementos de una interfaz. . ndice de Contenidos 4 - Creacin de interfaces con JFC/Swing [IV] 4.1 Introduccin 4.2 Contenedores de alto nivel 4.2.1 javax.swing.JApplet 4.2.2 javax.swing.JFrame 4.2.3 javax.swing.JDialog 4.3 Contenedores genricos. 4.3.1 javax.swing.JPanel 4.3.2 javax.swing.JScroIIPane 4.3.3 javax.swing.JSplitPane 4.3.4 javax.swing.JTabbedPane 4.3.5 javax.swing.JTooIBar 4.3.6 Controles bsicos 4.3.7 Controles avanzados 4.4 Conclusiones

La Geb de Joaqun

Java - Interfaz Grfico de Usuario (GUI) Creacin de interfaces con JFC/Swing [IV]

4.1 Introduccin
El API JFC/Swing ofrece un buen nmero de componentes con los que se pueden crear prcticamente cualquier elemento de los que se pueden encontrar hoy en da en una interfaz grfica. Los componentes pueden clasificarse en funcin de sus caractersticas. Seguidamente van a presentarse y en cada caso se mostrar la jerarqua de clases en la que cada componente se ubica. El propsito ltimo es tener una visin clara de cmo se organiza todo el API de forma que en todo momento se tenga un idea precisa de qu tipo de componente se est utilizando, de qu otros componentes ms genricos hereda propiedades y mtodos, y por ltimo cul es su funcionalidad principal en funcin de su pertenencia a dicha jerarqua.

4.2 Contenedores de alto nivel


Los contenedores de alto nivel son aquellos que sirven para encapsular partes completas de una interfaz grfica, ya sea una aplicacin o un Applet.

4.2.1 javax.swing.JApplet
Este componente sirve para desarrollar Applets. Todos los elementos que forman parte de la interfaz grfica de un Applet estn contenidos dentro de una clase que extiende a la clase JApplet, de ah que en ltima instancia herede propiedades y mtodos de la clase Container (vase el listado 1). Listado 1 - javax.swing.JApplet
java.lang.Object I +--java.awt.Component I +--java.awt.Container I +--java.awt.Panel I +--java.awt.Applet I +--javax.swing. Applet

que es la que define de forma abstracta a todos los componentes que sirven para encapsular otros componentes. La estructura bsica de un Applet es la que se presenta a continuacin:
public class JMyApplet extends JApplet { public void start(){} public void init(){} public void stop(){}

El mtodo start se ejecuta cada vez que el Applet debe reiniciarse. Esto puede ocurrir cuando por ejemplo el usuario recarga la pgina Web que contiene el Applet. El mtodo stop se 2 La Geb de Joaqun

Java - Interfaz Grfico de Usuario (GUI) Creacin de interfaces con JFC/Swing [IV] ejecuta cuando el Applet ya no va a ser utilizado, lo que sucede por ejemplo cuando el usuario abandona la pgina Web que contiene el Applet. Por ltimo, el mtodo init se ejecuta en una nica ocasin cuando el Applet comienza a cargarse por primera vez. Es en este mtodo donde deben prepararse el resto de los componentes. Es importante observar que start siempre se ejecuta despus del mtodo init. Cuando el Applet necesita recargarse se vuelve a ejecutar start pero no as init. El listado 2 muestra un Applet muy sencillo que nicamente cuenta con un botn en el que el usuario puede hacer clic. Listado 2 Cdigo que implementa un Applet
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class JMyApplet extends JApplet { public JButton jButton; public void init() { jButton = new JButton("Botn"); jButton.addActionListener ( new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println("El botn ha sido pulsado!"); } } ); Container contentPane = this.getContentPane(); contentPane.setLayout(new BorderLayout()); contentPane.add(jButton); } }

Aplicacin bsica que muestra un botn. La Geb de Joaqun 3

Java - Interfaz Grfico de Usuario (GUI) Creacin de interfaces con JFC/Swing [IV]

El componente contenedor principal del Applet se obtiene mediante el mtodo getContentPane. Este componente debe contener todos los elementos que formen parte de la interfaz grfica del Applet. Inmediatamente despus de obtener una referencia al contenedor se indica el tipo de layout que se desea emplear con el mtodo setLayout y finalmente los componentes se aaden utilizando el mtodo add. En este ejemplo no se ha implementado el mtodo start con lo que cuando el mtodo init termina se ejecuta el mtodo start por defecto de la clase y se muestra el Applet. Todos los componentes que forman parte del Applet se configuran en el mtodo init.

4.2.2 javax.swing.JFrame
El componente representado por la clase JFrame es a las aplicaciones lo que el componente representado por la clase JApplet es a los Applets. Al igual que ste JFrame hereda las propiedades y mtodos del componente genrico para contenedores, Container, si bien la jerarqua de clases es completamente diferente (vase el listado 3). El listado 4 muestra una aplicacin Java equivalente al Applet desarrollado anteriormente. Listado 3 - javax.swing.JFrame
java.lang.Object I +--java.awt.Component I +--java.awt.Container I +--java.awt.Window I +--java.awt.Frame I +--javax.swing. JFrame

Listado 4 - Aplicacin Java equivalente al applet del listado 2


import java.awt.*; import java.awt.event.*; import javax.swing.*; public class JMyFrame extends JFrame { public JButton jButton; public JMyFrame() { setSize(800, 600);

La Geb de Joaqun

Java - Interfaz Grfico de Usuario (GUI) Creacin de interfaces con JFC/Swing [IV]
jButton = new JButton("Botn"); jButton.addActionListener ( new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println("El botn ha sido pulsado!"); } } ); Container contentPane = this.getContentPane(); contentPane.setLayout(new BorderLayout()); contentPane.add(jButton); } public static void main(String[] args) { try { JMyFrame jMyFrame = new JMyFrame(); jMyFrame.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } } ); jMyFrame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } catch (Throwable t) { t.printStackTrace(); } } }

En esta ocasin todos los componentes que forman parte de la aplicacin se configuran en el propio constructor de la clase, de una manera equivalente a lo que se haca en el mtodo init del Applet. Asimismo dentro del constructor tambin se establecen propiedades generales de la aplicacin, como por ejemplo el tamao de la misma con el mtodo setSize. Todas las aplicaciones Java cuentan con un nico punto de entrada que es el mtodo main. En este mtodo se crea una instancia de la clase principal, se establece qu es lo que debe hacer dicha aplicacin cuando reciba el evento correspondiente al cierre de la aplicacin (o cualquier otro evento genrico de la aplicacin) y finalmente se indica que la ventana principal debe mostrarse con el mtodo setVisible. Obsrvese que hasta que no se ejecuta este mtodo nada de lo que se ha creado en el constructor se muestra.

La Geb de Joaqun

Java - Interfaz Grfico de Usuario (GUI) Creacin de interfaces con JFC/Swing [IV]

4.2.3 javax.swing.JDialog
ste es el ltimo de los contenedores de alto nivel. Sirve para crear ventanas de dilogo. Este tipo de ventanas se integran en las aplicaciones y Applets y se utilizan para mostrar al usuario mensajes. Listado 5 - javax.swing.JDialog
java.lang.Object I +--java.awt.Component I +--java.awt.Container I +--java.awt.Window I +--java.awt.Dialog I +--javax.swing. J Dialog

Los dilogos ms conocidos son aquellos que indican al usuario algn tipo de alerta. En el listado 6 se muestra el cdigo del botn que modifica la versin del listado 4, de forma que cuando el usuario haga clic se muestre una ventana de dilogo. Listado 6 - Listado 4 modificado con ventana de dialogo
jButton = new JButton("Botn"); jButton.addActionListener ( new ActionListener() { public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog ( (JButton)e.getSource(), "El botn ha sido pulsado!", "Advertencia", JOptionPane.WARNING_MESSAGE ); } } );

El primer parmetro del mtodo show MessageDialog es el componente del cual va a depender la ventana de dilogo. El mtodo getSource de la clase ActionEvent proporciona el componente desde el cual se dispar el evento, en este ejemplo el botn, y ste sirve perfectamente como "padre" de la ventana de dilogo. El segundo parmetro es el mensaje que se mostrar al usuario. El tercer parmetro contiene la cadena de texto correspondiente al ttulo de la ventana de dilogo. Finalmente el ltimo parmetro permite establecer el tipo de alerta. En este ejemplo esa alerta es de advertencia. Las ventanas de dilogo son uno de los componentes ms empleados en la creacin de interfaces grficos. Existen varios tipos de dilogo (modales, no modales, etc.) y su explicacin excede con mucho la extensin de este artculo. En cualquier caso, construir una 6 La Geb de Joaqun

Java - Interfaz Grfico de Usuario (GUI) Creacin de interfaces con JFC/Swing [IV] ventana de dilogo no difiere en lo esencial de la creacin de una aplicacin o de un Applet por lo que todo lo explicado hasta el momento se puede aplicar de forma equivalente.

4.3 Contenedores genricos.


Los contenedores genricos se emplean para encapsular partes de una aplicacin o un Applet. Todos comparten la misma jerarqua, que es la que se muestra en el listado 7. Listado 7 - Jerarquia de los contenedores genricos
java.lang.Object I +--java.awt.Component I +--java.awt.Container I +--javax.swing. JComponent I +-- contenedor generico

4.3.1 javax.swing.JPanel
ste es sin duda alguna uno de los componentes ms empleados en la creacin de interfaces grficas. Un JPanel describe un rea que agrupa a otros componentes y se integra dentro de una aplicacin de la misma forma que lo hacen otros controles bsicos como por ejemplo un botn (JButton) o una etiqueta (JLabel). El ejemplo del listado 8 muestra el constructor de una aplicacin Java similar a las aplicaciones de los ejemplos anteriores. Listado 8 - Aplicacin con JPanel
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class JMyFrame3 extends JFrame { public JPanel jPanel; public JMyFrame3() { setSize(800, 600); jPanel = new JPanel(); jPanel.setLayout(new GridLayout(0, 2)); jPanel.add(new JButton("Botn 1")); jPanel.add(new JButton("Botn 2")); Container contentPane = this.getContentPane(); contentPane.setLayout(new BorderLayout()); contentPane.add(jPanel, BorderLayout.PAGE_START); contentPane.add(new JTextArea(), BorderLayout.CENTER); }

La Geb de Joaqun

Java - Interfaz Grfico de Usuario (GUI) Creacin de interfaces con JFC/Swing [IV]
public static void main(String[] args) { try { JMyFrame3 jMyFrame3 = new JMyFrame3(); jMyFrame3.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } } ); jMyFrame3.setVisible(true); } catch (Exception e) { e.printStackTrace(); } catch (Throwable t) { t.printStackTrace(); } } }

El componente JPanel se emplea para agrupar dos botones. Inmediatamente despus de crear la instancia se llama al mtodo setLayout para establecer el tipo de administrador de diseo que se emplear. Seguidamente se aaden los controles que forman parte del componente JPanel. Al final ste se integra dentro de la aplicacin del mismo modo que lo hace, por ejemplo, el control correspondiente a un rea de edicin de texto (JTextArea). Los componentes JPanel son muy fciles de manejar y permiten organizar la interfaz no slo desde un punto de vista visual sino adems para agrupar funcionalidades. Cuando se crean interfaces grficas complejas una de las prcticas ms comunes consiste en desarrollar clases especficas que extienden a la clase JPanel para aglutinar partes de la aplicacin que comparten un espacio comn y una funcin concreta dentro de la aplicacin o el Applet. Listado 9 - Jpanel permite agrupar funionalidades
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class JMyPanel extends JPanel implements ActionListener { public JButton jButton1, jButton2;

La Geb de Joaqun

Java - Interfaz Grfico de Usuario (GUI) Creacin de interfaces con JFC/Swing [IV]
public JMyPanel() { jButton1 = new JButton("Botn 1"); jButton1.addActionListener(this); jButton2 = new JButton("Botn 2"); jButton2.addActionListener(this); setLayout(new GridLayout(0, 2)); add(jButton1); add(jButton2); } public void actionPerformed(ActionEvent e) { JButton jButton = (JButton)e.getSource(); if (jButton.equals(jButton1)) { System.out.println("El botn 1 ha sido pulsado!"); } else if (jButton.equals(jButton2)) { System.out.println("El botn 2 ha sido pulsado!"); } } }

Si nos fijamos en el ejemplo del listado 9, veremos que la clase JMyPanel extiende a la clase JPanel y aglutina un grupo especfico de botones de la aplicacin. Adems esta clase implementa la interfaz ActionListener de forma que todos los eventos relacionados con todos los botones se tratan en el mtodo actionPerformed que se ha sobrescrito. Incluir este nuevo componente en la aplicacin es tan sencillo como hacer:
public JMyFrame4() { setSize(800, 600); Container contentPane = this.getContentPane(); contentPane.setLayout(new BorderLayout()); contentPane.add(new JMyPanel(), BorderLayout.PAGE_START); contentPane.add(new JTextArea(), BorderLayout.CENTER); }

En esta nueva versin de la aplicacin los botones ya no pertenecen a la clase principal sino que forman parte del contenedor representado por la clase JMyPanel y es ah donde se trata todo lo referente a estos controles.

4.3.2 javax.swing.JScroIIPane
Prcticamente cualquier elemento dentro de una interfaz grfica puede tener barras de desplazamiento de forma que el usuario pueda ver aquellas partes que quedan ocultas debido a la limitacin de espacio. El ejemplo ms simple es el que consiste en aadir barras de desplazamiento a las cajas de edicin de texto, tal y como muestra el listado 10.

La Geb de Joaqun

Java - Interfaz Grfico de Usuario (GUI) Creacin de interfaces con JFC/Swing [IV] Listado 10- Barras de desplazamiento para una caja de texto
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class JMyFrame5 extends JFrame { public JTextArea jTextArea; public JScrollPane jScrollPane; public JMyFrame5() { setSize(800, 600); jTextArea = new JTextArea(); jScrollPane = new JScrollPane( jTextArea, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); Container contentPane = this.getContentPane(); contentPane.setLayout(new BorderLayout()); contentPane.add(new JMyPanel(), BorderLayout.PAGE_START); contentPane.add(jScrollPane, BorderLayout.CENTER); } public static void main(String[] args) { try { JMyFrame5 jMyFrame5 = new JMyFrame5(); jMyFrame5.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } } ); jMyFrame5.setVisible(true); } catch (Exception e) { e.printStackTrace(); } catch (Throwable t) { t.printStackTrace(); } } }

10

La Geb de Joaqun

Java - Interfaz Grfico de Usuario (GUI) Creacin de interfaces con JFC/Swing [IV] El constructor de la clase JScrollPane recibe tres parmetros. El primero es el componente al que se quieren aadir las barras de desplazamiento. Los dos siguientes parmetros indican la poltica que se ha de seguir a la hora de mostrar dichas barras de desplazamiento. En este ejemplo se emplean las constantes VERTICAL_SCROLLBAR_ALWAYS y HORllONTAL_SCROLLBAR_ALWAYS lo que establece que las barras van a aparecer siempre, con independencia de que haya o no espacio suficiente para mostrar el contenido del componente correspondiente a la caja de edicin de texto. Obsrvese que cuando se emplea JScrollPane ya no se aade a la aplicacin el componente al que se le van a aadir barras de desplazamiento sino el propio componente JScrollPane, que es el que acta de contenedor.

4.3.3 javax.swing.JSplitPane
Este tipo de contenedor permite agrupar dos componentes uno al lado del otro, o uno encima del otro. Entre ambos se muestra una barra de forma que cuando el usuario hace clic y desplaza la barra, las reas de los dos componentes mostrados cambian de tamao. El ltimo ejemplo puede modificarse de forma que el usuario pueda establecer manualmente el espacio asignado al rea de botones frente al espacio de la caja de edicin de texto. El cdigo que se encarga de esto se muestra en el listado 11. Listado 11Enriqueciendo la interfazz del ejemplo anterior
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class JMyFrame6 extends JFrame { public JSplitPane jSplitPane; public JTextArea jTextArea; public JScrollPane jScrollPane; public JMyFrame6() { setSize(800, 600); jTextArea = new JTextArea(); jScrollPane = new JScrollPane( jTextArea, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); jSplitPane = new JSplitPane( JSplitPane.VERTICAL_SPLIT, new JMyPanel(), jScrollPane); Container contentPane = this.getContentPane(); contentPane.setLayout(new BorderLayout()); contentPane.add(jSplitPane, BorderLayout.CENTER); }

La Geb de Joaqun

11

Java - Interfaz Grfico de Usuario (GUI) Creacin de interfaces con JFC/Swing [IV]
public static void main(String[] args) { try { JMyFrame6 jMyFrame6 = new JMyFrame6(); jMyFrame6.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } } ); jMyFrame6.setVisible(true); } catch (Exception e) { e.printStackTrace(); } catch (Throwable t) { t.printStackTrace(); } } }

El primer parmetro de la clase JSplitPane establece el tipo de divisin, horizontal o vertical. Los dos siguientes parmetros son los componentes que agrupa este contenedor. El objeto jSplitPane acta en este caso de contenedor as que slo se aade a la aplicacin este componente y no los componentes individuales que aglutina.

4.3.4 javax.swing.JTabbedPane
Este contenedor se emplea para distribuir otros componentes en pestaas. Estudiemos ahora el listado 12. El mtodo addTab recibe tres pa r metros. El primero es el ttulo de la pestaa. El segundo es una instancia de la clase Icon correspondiente al icono que desea mostrarse junto al titulo en la pestaa. Si este parmetro es null no se muestra ico o alguno. Por ltimo. el tercer parmetro es el componente correspondiente a la pestaa. Listado 12 - Interfaz Grfica con pestaas
import java.awt.*; import java.awt.event.*; import javax.swing.*;

12

La Geb de Joaqun

Java - Interfaz Grfico de Usuario (GUI) Creacin de interfaces con JFC/Swing [IV]
public class JMyFrame7 extends JFrame { public JTabbedPane jTabbedPane; public JMyFrame7() { setSize(800, 600); jTabbedPane = new JTabbedPane(); jTabbedPane.addTab( "Pestaa 1", null, new JTextArea("Caja de edicin de texto 1")); jTabbedPane.addTab( "Pestaa 2", null, new JTextArea("Caja de edicin de texto 2")); Container contentPane = this.getContentPane(); contentPane.setLayout(new BorderLayout()); contentPane.add(jTabbedPane, BorderLayout.CENTER); } public static void main(String[] args) { try { JMyFrame7 jMyFrame7 = new JMyFrame7(); jMyFrame7.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } } ); jMyFrame7.setVisible(true); } catch (Exception e) { e.printStackTrace(); } catch (Throwable t) { t.printStackTrace(); } } }

La Geb de Joaqun

13

Java - Interfaz Grfico de Usuario (GUI) Creacin de interfaces con JFC/Swing [IV]

4.3.5 javax.swing.JTooIBar
La clase JToolBar se emplea para crear la barra de herramientas. Normalmente stas estn formadas por botones, listas y otro tipo de controles bsicos, aunque como contenedor un componente JToolBar puede agrupar cualquier tipo de componente. La clase del listado 13 extiende a la clase JToolBar y crea una barra de herramientas sencilla con dos botones. Listado 13 - Barra de herramientas con dos botones
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class JMyToolBar extends JToolBar { public JButton jButton1, jButton2; public JMyToolBar() { jButton1 = new JButton("Botn 1"); jButton2 = new JButton("Botn 2"); add(jButton1); add(jButton2); } }

Para aadir esta barra de herramientas a la aplicacin simplemente se tiene que aadir de la misma forma que se hace con el resto de los componentes:
Container contentPane = this.getContentPane(); contentPane.setLayout(new BorderLayout()); contentPane.add(new JMyToolBar(), BorderLayout.PAGE_START); contentPane.add(jScrollPane, BorderLayout.CENTER);

14

La Geb de Joaqun

Java - Interfaz Grfico de Usuario (GUI) Creacin de interfaces con JFC/Swing [IV]

4.3.6 Controles bsicos


A lo largo de esta serie de artculos se han visto directa o indirectamente los fundamentos de muchos controles bsicos: etiquetas, botones, listas, listas desplegables, barras de desplazamiento, cajas de edicin de texto, etc. Cada uno de estos controles tienen sus particularidades pero en general son bastantes fciles e intuitivos de usar. Representan en ltima instancia los elementos con los que finalmente interacciona el usuario y se agrupan empleando los contenedores vistos hasta completar toda la interfaz grfica de la aplicacin o el Applet Java. A continuacin se muestra una lista de los controles bsicos: javax.swing.JLabel javax.swing.JButton javax.swingJComboBox javax.swingJList javax.swingJMenu javax.swing.JSlider javax.swing.JSpinner javax.swing.JTextField javax.swing.JFormattedTextField

Casi todos estos controles comparten un mismo tronco en la jerarqua de clases, que es la que se muestra en el listado 14.

Listado 14 - Jerarquia para los controiles bsicos


java.lang.Object I +--java.awt.Component I +--java.awt.Container I +--javax.swing. JComponent

Por otro lado, desde un punto de vista abstracto muchos componentes pertenecen a la misma clase, o la misma jerarqua de clases. As por ejemplo el API considera que un botn tradicional, un radio button o un checkbox son esencialmente lo mismo, y los tres tipos de componentes se implementan con la clase JButton, y sta se crea a partir de la clase abstracta AbstractButton. Asimismo los elementos que forman parte de un men se entroncan dentro de la jerarqua de clases de la forma que muestra el listado 15.

La Geb de Joaqun

15

Java - Interfaz Grfico de Usuario (GUI) Creacin de interfaces con JFC/Swing [IV] Listado 15 - Jerarquia para los elementos de men
java.lang.Object I +--java.awt.Component I +--java.awt.Container I +--javax.swing. Jcomponent I +--javax.swing.AbstractButton I +--javax.swing.JMenuItem I +--javax.swing.JMenu

Es decir, un elemento de un men (JMenultem) se considera que en esencia es lo mismo que un botn, y de ah que se implemente al igual que los propios botones a partir de la clase abstracta AbstractButton. Siguiendo este mismo mecanismo la mayor parte de los elementos de texto comparten los mismos ancestros en la jerarqua de clases (vase el listado 16). Listado 16 - Jerarquia para los elementos de texto
java.lang.Object I +--java.awt.Component I +--java.awt.Container I +--javax.swing.Jcomponent I +--javax.swing.text.JtextComponent I +--Componentes de texto

De esta manera, las clases JTextField o JFormattedTextField extienden a la clase JTextComponent, que representa de forma abstracta a todos aquellos componentes que se emplean para mostrar texto que adems puede ser editable en algunos casos. Sera imposible hacer un estudio de todos estos controles en este artculo. No obstante, en el sitio web http://java.sun.com/docs/books/tutorial/uiswing/index.html se pueden encontrar numerosos ejemplos de utilizacin de estos controles.

4.3.7 Controles avanzados


Los controles avanzados representan componentes complejos que por lo general suelen actuar al mismo tiempo como contenedores de otros componentes. javax.swing.JProgressBar Este componente permite crear barras de progreso que se emplean en los interfaces grficos tpicamente para indicar el porcentaje de una tarea que se ha completado. Para utilizar barras 16 La Geb de Joaqun

Java - Interfaz Grfico de Usuario (GUI) Creacin de interfaces con JFC/Swing [IV] de progreso es necesario conocer previamente la utilizacin de threads ya que, a grandes rasgos y sin entrar en detalles, por un lado est la tarea propiamente dicha y por otro la tarea responsable de actualizar la barra de progreso. Ambas rutinas deben ejecutarse en paralelo y tienen que estar sincronizadas. javax.swing.JTooITip Un tool tip es un pequeo cuadro que se muestra encima de un componente cuando el ratn pasa por encima y se detiene en l el suficiente tiempo. Con este componente se pueden aadir este tipo componentes a los botones, etiquetas, etc. de la aplicacin. javax.swing.JColorChooser Este es un elemento muy especfico que se utiliza para ofrecer al usuario un cuadro donde puede elegir un color de una paleta predeterminada. javax.swing.JFileChooser Este componente es el equivalente en Java de los cuadros de dilogo que se encuentran en todas las aplicaciones de Windows para abrir un fichero. Por ejemplo, con el cdigo del listado 17 podemos modificar una de las aplicaciones anteriores para que se abra este dilogo cuando el usuario haga clic. Listado 17 - abriendo el dialogo del sistema de ficheros
jButton = new JButton("Botn"); jButton.addActionListener ( new ActionListener() { public void actionPerformed(ActionEvent e) { JButton jButton = (JButton)e.getSource(); int iReturn = jFileChooser.showOpenDialog(jButton); if (iReturn==JFileChooser.APPROVE_OPTION) { File fSelectedFile = jFileChooser.getSelectedFile(); System.out.println("fSelectedFile=" + fSelectedFile.getAbsolutePath()); } } } );

javax.swing.JTable El API JFC/Swing tambin permite crear tablas. Cada una de las celdas de una tabla puede contener a su vez todo tipo de elementos complejos, o en la versin ms sencilla, simplemente cadenas de texto. Las tablas as como los rboles son unos de los elementos ms difciles de manejar dentro de todo el API, especialmente en aquellos casos en los que se desean mostrar tablas complejas que contienen componentes personalizados.

La Geb de Joaqun

17

Java - Interfaz Grfico de Usuario (GUI) Creacin de interfaces con JFC/Swing [IV] javax.swing.JTextPane La clase JTextPane representa un componente con el que se pueden crear cajas de edicin de texto avanzadas, en las que el texto que se muestra puede tener un formato dado, incluso HTML. javax.swing.JTree Por ltimo, con la clase JTree se pueden crear rboles. Al igual que en los otros casos las hojas de dichos rboles pueden ser simplemente cadenas de texto u otros componentes.

4.4 Conclusiones
En esta ltima entrega se han resumido todos los componentes que el API JFCjSwing ofrece, prestando especial atencin a aquellos que actan de contenedores y permiten organizar las interfaces grficas desde el punto de vista de la funcionalidad as como del diseo. Por muy complicado que pueda llegar a ser una interfaz grfica, los mecanismos para crearla son los ya expuestos. La mejor forma de profundizar y avanzar en el desarrollo de aplicaciones y Applets Java con interfaces grficos es simplemente programando y teniendo a mano la documentacin de Sun sobre el API.

18

La Geb de Joaqun

También podría gustarte