martes, 8 de enero de 2008

Introducción a Swing (I).

Hablar de Swing, significa hablar de la JFC (acrónimo en inglés de Java Foundation Classes), es decir, un conjunto de clases jerarquizadas que permiten diseñar e implementar interfaces gráficas e interactivas escritas en lenguaje Java.

La JFC incluye 5 grandes bloques de características y/o componentes:

1) Soporte para los componentes Swing: Incluye todo desde Contenedores de alto nivel (JFrame, JApplet, JWindow, JDialog) hasta Componentes de peso ligero (JXXXXX, como JButton, JPanel, JMenu, etc)

2) Soporte de Aspecto y Comportamiento: Permite a los componente Swing una variada selección de aspectos y comportamientos. Por ejemplo, el mismo programa puede usar el Aspecto y Comportamiento "de Java" o el Aspecto y Comportamiento "de Windows".

3) Soporte API de Accesibilidad: Permite tecnologías tales como lectores de pantalla y display Braille para obtener información desde el interface de usuario.

4) Soporte Java 2D API (sólo JDK 1.2 ) : Permite incorporar graficos 2D de alta calidad, texto, e imágenes en aplicaciones y applets Java.

4) Soporte de Drag and Drop (sólo JDK 1.2) : Permite de arrastrar y soltar entre aplicaciones Java y aplicaciones nativas.

La API de Swing es muy potente, y buena prueba de ello son los 18 paquetes que integran su funcionalidad:

javax.accessibility, javax.swing.plaf, javax.swing.text,
javax.swing, javax.swing.plaf.basic, javax.swing.text.html,
javax.swing.border, javax.swing.plaf.metal, javax.swing.text.html.parser javax.swing.colorchooser, javax.swing.plaf.multi, javax.swing.text.rtf,
javax.swing.event, javax.swing.plaf.synth, javax.swing.tree,
javax.swing.filechooser, javax.swing.table, javax.swing.undo.

Afortunadamente, la mayoría de las aplicaciones solo usan un grupo reducido de los paquetes anteriores. Normalmente se usa: javax.swing y javax.swing.event.

Originariamente, en lugar de utilizar Swing, las interfaces gráficas se escribían en Java con el paquete AWT (Abstract Windowing Toolkit). AWT es dependiente de la plataforma (puede tener distintas apariencias en Windows y en Linux, incluso dentro de Linux, depende del
gestor gráfico que usemos). Las interfaces gráficas Swing son independientes de la plataforma, aunque también permiten al programador especificar una apariencia o aspecto diferente en cada plataforma, esta característica las hace algo mas lentas que las interfaces construidas con AWT.


Swing, tal como ya se ha dicho, es un conjunto de paquetes construido en la parte más alta de AWT y que proporciona un gran número de clases preconstruidas (aproximadamente
250 clases y 40 componentes). Desde el punto de vista del programador, los componentes son probablemente los más interesantes.

Vamos a enumerar los componentes (observe que cada componente empieza con J):

JApplet: Versión extendida de java.applet.Applet que añade el soporte
para los paneles base y otros paneles.

JButton: Comando de botón.

JCheckBox: Casilla de activación que puede ser seleccionada o deseleccionada.

JColorChooser: Panel de controles que permite al usuario seleccionar un color.

JComboBox: Cuadro de lista desplegable, que es una combinación de cuadro de texto y lista desplegable.

JComponent: Clase base para los componentes Swing.

JDesktopPane: Contenedor usado para crear una interfaz de documentos múltiples o un escritorio.

JDialog: Clase base para crear un cuadro de diálogo.

JEditorPane: Componente de texto que permite al usuario editar varios tipos de contenido.

JFilechooser: Permite al usuario elegir un archivo.

JFrame: Una versión extendida de java.awt.Frame que añade soporte para los paneles base y otros paneles.

JInternalFrame: Un objeto de peso ligero que proporciona muchas de las características de un frame pesado.

JInternalFrame. JDesktopIcon: Representa una versión iconificada de un JInternalFrame.

JLabel: Área visualizable para una cadena de texto corta o una imagen (o ambos).

JLayeredPane: Añade capas a un contenedor Swing, permitiendo que los componentes se solapen unos con otros.

JList: Componente que permite al usuario seleccionar uno o más objetos de una lista.

JMenu: Un menú de lista desplegable que contiene Jmenultems, que se visualiza cuando el usuario lo selecciona en el componente JMenuBar.

JMenuBar: Una implementación de una barra de menú.

JMenultem: Una implementación de una opción de menú.

JOptionPane: Facilita la posibilidad de que emerja un cuadro de diálogo estándar.

JPanel: Un contenedor genérico ligero.

JPasswordField: Permite editar una línea simple de texto donde no muestra los caracteres originales.

JPopupMenu: Un menú emergente.

JPopupMenu.Separator: Separador de un menú específico emergente.

JProgressBar: Componente que visualiza un valor entero en un intervalo.

JRadioButton: Botón de opción que puede ser seleccionado o no, marcando su estado visualmente.

JRadioButtonMenu: Botón de opción de un elemento de menú.

JRootPane: Componente fundamental de la jerarquía del contenedor.

JScrollBar: Implementación de una barra de desplazamiento.

JScrollPane: Contenedor que gestiona barras de desplazamiento verticales y horizontales y las cabeceras de filas y columnas.

JSeparator: Separador de menú.

JSlider: Componente que permite al usuario seleccionar un valor deslizando
un botón en un intervalo.

JSplitPane: Divide dos componentes.

JTabbedPane: Permite al usuario cambiar entre un grupo de componentes haciendo clic sobre pestañas/lengüetas.

JTable: Presenta datos en un formato de tabla bidimensional.

JTextArea: Área de múltiples líneas que visualiza texto plano.

JTextFieEd: Permite la edición de una línea de texto sencilla.

JTextPane: Componente de texto que se puede marcar con atributos.

JToggleButton: Botón de dos estados.

JToggleButton, ToggleButtonModel: Modelo de botón toggle.

JToolBar: Barra de herramientas, útil para visualizar controles usados normalmente.

JToolBar.Separator: Separador específico de barra de herramientas.

JToolTip: Visualiza una utilidad para un componente.

JTree: Visualiza un conjunto de datos jerárquicos.

JTree.DynamicUti1TreeNode: Permite separar vectoresl hashtables/arrays/cadenas y crear nodos apropiados para los hijos.

JTree.EmptySelectionMode1: Modelo de elección de árbol que no permite seleccionar nada.

JViewport: Vista mediante la que se ve información.

JWindow: Ventana que puede visualizarse en cualquier sitio del escritorio.



COMPONENTES.

A cada elemento gráfico GUI se le denomina genéricamente "componente" y se crean instanciándolos directamente de una clase específica de la jerarquía de clases JFC.



A los componentes que pueden contener a otros componentes se les denomina "contenedores".























ÁREA PRÁCTICA: SWING y NETBEANS.

El primer elemento que debemos crear en una interfaz gráfica es el soporte para todos los componentes, es decir, o una ventana (componente JFrame) o un Applet.

En términos prácticos, para Netbeans 6.0, abrimos un nuevo proyecto:




Si hacemos ahora Siguiente,



Elegimos el nombre y la ubicación del proyecto, deseleccionamos la casilla de verificación "Crear clase principal" y finalmente pulsamos "Finalizar". Aparecerá inmediatamente en el IDE de NetBeans un proyecto tipo vacío que puede verse en la Ventana de proyecto,




Si ahora hacemos click con el botón derecho en el proyecto y hacemos "Nuevo"/ "Formulario o JFrame", es decir:





aparecerá:


donde precisaremos el nombre que recibirá el marco, si hacemos finalmente "Finalizar",

Seleccionamos ahora desde la paleta de componentes

el componente jLabel y lo soltamos en el marco o JFrame.



Ahora vamos a cambiar algunas propiedades de la etiqueta.

Cambiaremos el texto de la etiqueta por este otro "!!HOLA VIEJO MUNDO!!, modificaremos tambiémn el Font y el ForeColor. Estas modificaciones se realizan en la ventana de propiedades.

Para acceder a la ventana de propiedades

  • Hacemos click con el botón derecho dentro de la etiqueta

  • O seleccionamos directamente la ventana propiedades mientras la etiqueta tiene el foco.

Aparecerá:

Cambiamos la propiedad Text, Font y ForeColor de modo que aparezca


Seguidamente ejecutaremos el programa, para ello, o bien:


  • Hacemos "Ejecutar"/"Ejecutar Proyecto principal"

  • Hacemos F6

  • Hacemos click con el botón derecho sobre la ventana o marco en la Ventana de proyecto y finalamente "Ejecutar archivo".

  • Pulsamos en el icono

Obteniéndose finalmente



No hay comentarios: