HTMLpointHTMLpoint HTMLpoint.com


 Introducción a swing



Además del paquete java.awt, Java pone a disposición del programador el paquete javax.swing para crear unas interfaces gráficas. En este capítulo veremos para qué la Sun Microsystem ha creado otro paquete y qué diferencias hay con awt.
Para presentar el paquete hablaré del programa que estoy preparando para mi tesina en la Facultad de Informática de la Universidad de Pisa. Para informaciones con respecto a Orespics podéis poneros en contacto conmigo o con las profesoras Laganà y Ricci del Departamento de Informática de Pisa (Corso Italia, 40).
El nombre del programa es Orespics Programming Language y, en práctica, es un ambiente integrado en el que es posible programar agentes paralelos que comunicam entre ellos, intercambiando mensajes. El ambiente permite definir y poner en marcha estos agentes. Se propone como instrumento de soporte didáctico al aprendizaje de las modalidades de programación paralela, programación que puede resultar muy difícil.
Precisamente por ser un instrumento didáctico, tiene una interfaz usuario User Friendly. La interfaz ha sido escrita utilizando el paquete Swing de Java.
Swing ha sido totalmente escrito en Java utilizando el paquete awt, y pone a disposición del usuario muchas clases que están también en awt, pero mucho mejores y más potentes. Además introduce muchas más clases que no están en awt.
Por lo tanto, veamos cuáles son las clases y las interfaces incluidas en el paquete:

Interfaces
Action
BoundedRangeModel
ButtonModel
CellEditor
ComboBoxEditor
ComboBoxModel
DesktopManager
Icon
JComboBox.KeySelectionManager
ListCellRenderer
ListModel
ListSelectionModel
MenuElement
MutableComboBoxModel
Renderer
RootPaneContainer
Scrollable
ScrollPaneConstants
SingleSelectionModel
SwingConstants
UIDefaults.ActiveValue
UIDefaults.LazyValue
WindowConstants

Clases
AbstractAction
AbstractButton
AbstractCellEditor
AbstractListModel
ActionMap
BorderFactory
Box
Box.Filler
BoxLayout
ButtonGroup
CellRendererPane
ComponentInputMap
DebugGraphics
DefaultBoundedRangeModel
DefaultButtonModel
DefaultCellEditor
DefaultComboBoxModel
DefaultDesktopManager
DefaultFocusManager
DefaultListCellRenderer
DefaultListCellRenderer.UIResource
DefaultListModel
DefaultListSelectionModel
DefaultSingleSelectionModel
FocusManager
GrayFilter
ImageIcon
InputMap
InputVerifier
JApplet
JButton
JCheckBox
JCheckBoxMenuItem
JColorChooser
JComboBox
JComponent
JDesktopPane
JDialog
JEditorPane
JFileChooser
JFrame
JInternalFrame
JInternalFrame.JDesktopIcon
JLabel
JLayeredPane
JList
JMenu
JMenuBar
JMenuItem
JOptionPane
JPanel
JPasswordField
JPopupMenu
JPopupMenu.Separator
JProgressBar
JRadioButton
JRadioButtonMenuItem
JRootPane
JScrollBar
JScrollPane
JSeparator
JSlider
JSplitPane
JTabbedPane
JTable
JTextArea
JTextField
JTextPane
JToggleButton
JToggleButton.ToggleButtonModel
JToolBar
JToolBar.Separator
JToolTip
JTree
JTree.DynamicUtilTreeNode
JTree.EmptySelectionModel
JViewport
JWindow
KeyStroke
LookAndFeel
MenuSelectionManager
OverlayLayout
ProgressMonitor
ProgressMonitorInputStream
RepaintManager
ScrollPaneLayout
ScrollPaneLayout.UIResource
SizeRequirements
SizeSequence
SwingUtilities
Timer
ToolTipManager
UIDefaults
UIDefaults.LazyInputMap
UIDefaults.ProxyLazyValue
UIManager
UIManager.LookAndFeelInfo
ViewportLayout

Excepciones
UnsupportedLookAndFeelException

Está claro que hay muchas más clases de las de swing. Además hay muchas que tienen el mismo nombre de algunas clases de awt, excepto una J inicial, como, por ejemplo, JFrame, JDialog, etc. Estas clases funcionan igual que las de awt, pero contienen muchos métodos más útiles.
Presentamos algunas de estás cosas que están en swing más que en awt.
En swing están las Toolbar, es decir, unas pequeñas barras sobre las que hay unos botones. Se pueden mover dentro de las ventanas que las incluyen.
Los botones de swing, como casi todos los demás JComponent, pueden tener tanto una etiqueta como una imagen, imagen que puede cambiar según el estado del botón.
Además en swing se pueden utilizar los Tooltip, es decir, aquellas sugerenias que salen automáticamente en un componente cuando el ratón se detiene en él durante un rato.
Vamos a ver ahora el efecto de estos componentes swing en Orespics.



En el Dibujo podemos notar la Toolbar (en la que he ocultado los bordes) de otras 8 Toolbar, una por cada categoría de botones. Se ven los botones que incluyen las imágenes, unas activas y otras no.



En el Dibujo se puede ver un Tooltip en uno de los botones.



Además podemos notar que incluso en los menús se pueden introducir unas imágenes y esto las convierte en imágenes muy agradables para el usuario.



Las toolbar se pueden ocultar fácilmente y se pueden visualizar en la pantalla.



En el dibijo notamos el cambio de la imagen del botón con el pingüino, que se hace más grande con swing. Como ya hemos dicho, es posible cambiar el icono según el estado del botón.

Otros dos componentes muy interesantes de Swing son los TabbedPane y los Árboles.
Los primeros son los controles a tarjetas típicos de las interfaces de Windows, muy agradables. Los segundos muestran las estructuras a árbol como las que se ven cuando se navega en los discos duros utilizando explorer de Windows.

Con swing se puede incluso cambiar el llamado Look and Feel de la ventana, es decir, su aspecto, convirtiéndola en algo parecido a una interfaz típica de Java, de Windows, de Macintosh (si está en un aparato Mac) y de Linux (X-Windows - Motif).












Con Swing cambia completamente la gestión del texto. Se pueden crear texto de colores, con distintos tipos de caracteres.

Muchas más son las posibilidades de Swing, por ejemplo, unos Dialog para navegar en los archivos con unas preview y unos dialog para elegir los colores. Estas opciones ya vienen implementadas en el paquete.

A mí me resulta muy interesante saber que el dialog de selección de los colores del Dibujo 16 se crea y se utiliza con una sola orden, es decir, que basta con invocar el método:

static JDialog
createDialog(Component c, String title,
boolean modal, JColorChooser chooserPane,
ActionListener okListener,
ActionListener cancelListener)


de la clase JColorChooser.

De todas formas creo que os han quedado claras las potencialidades del paquete que, sin embargo, todavía no está incluido en las versiones de Java de los navegadores y que, por lo tanto, todavía no es posible crear unos apliques swing sin cargar plugins en los navegadores.

En los textos de swing es posible introducir incluso imágenes y, además, se pueden leer y decodificar directamente los archivos de html, rtf (Un primo de .doc).

En Swing está la clase Jdialog, parecida a la Applet de java.applet. Es una extensión y presenta, además de los métodos de la clase Applet (de la que es una extensión), otros métodos muy interesantes, entre ellos el método void setJMenuBar(JMenuBar menuBar).

Obviamente, como hay muchos GUI más en swing, es necesario gestionar los sucesos. Para esto está el paquete de java.awt.event que gestiona dichos sucesos.


  Volver al inicio de la página