Documentos de Académico
Documentos de Profesional
Documentos de Cultura
0
Revisado en el Ciclo II/2007
INDICE
Introduccin Swing Swing o awt? Componentes swing Manejo de eventos Estructura de una aplicacin
Introduccin
La meta original de diseo de la biblioteca de interfaz grfico de usuario en Java 1.0 era permitir al programador construir un IGU que tuviera buen aspecto en todas las plataformas. Esta meta no se logr. En su lugar, el AWT de Java 1.0 produce un IGU que tiene una apariencia igualmente mediocre en todos los sistemas. Adems, es restrictivo: solo se pueden usar cuatro fuentes y no se puede acceder a ninguno de los elementos del IGU ms sofisticados que existen en el sistema operativo.
Intro. (Cont.)
Adems, el AWT de Java 1.0 no es orientado a objetos. El por qu de esto? El AWT original haba sido conceptualizado, diseado e implementado en un mes. La situacin mejor con el modelo de eventos del AWT de Java 1.1 que toma un enfoque orientado a objetos mucho ms claro, junto con la adicin de JavaBeans, un modelo de programacin basado en componentes orientado hacia la creacin sencilla de entornos de programacin visuales.
Intro. (Cont.)
Java 2 acaba esta transformacin alejndose del AWT de Java 1.0 esencialmente, reemplazando todo con las Java Foundation Classes (JFC), cuya parte IGU se denomina Swing. Se trata de un conjunto de JavaBeans fciles de usar, y fciles de entender que pueden ser arrastrados y depositados (adems de programados a mano) para crear un IGU con el que uno se encuentre finalmente satisfecho.
swing o awt? 1
La gran diferencia entre los componentes swing y los componentes awt es que los primeros estn implementados absolutamente con cdigo no nativo lo que los hace independientes de la plataforma. Adems proporcionan ms capacidades que los componentes awt.
1. Informacin tomada de: Fco. Javier Ceballos. Java 2 Curso de Programacin. 2a. Edicin.
Los componentes swing se pueden identificar porque su nombre empieza por J; por ejemplo, el componente de awt Button tiene su correspondiente componente swing JButton. Los componentes awt se localizan en el paquete java.awt y los componentes swing en el paquete javax.swing
Se debe evitar usar los componentes de AWT como Menu, ScrollPane y todos los componentes que heredan de las clases Canvas y Panel de AWT junto con los componentes Swing, porque estos se dibujarn sobre los componentes Swing.
Componentes swing
Hay componentes swing para cada uno de los elementos que usted ya ha visto, mas de una vez, en una ventana de su sistema Windows, Linux u otro. Los ms comunes: Etiquetas: Se implementa a partir de la clase JLabel. Botones: Se implementa a partir de la clase JButton Cajas de Texto: Se implementan a partir de la clase JTextField las de una sola lnea de texto, y a partir de JTextArea las de varias lneas. Casillas de verificacin: Se implementan a partir de la clase JCheckBox
Componentes swing
Botones de opcin: Se implementan a partir de la clase JRadioButton Listas. Se implementan a partir de la clase JComboBox Barras de desplazamiento: Se implementan a partir de la clase JScrollBar Cuadros de dilogo estandar: Se implementan a partir de la clase JOptionPane.
Manejo de eventos
Cuando el usuario hace clic sobre un botn de pulsacin espera que ocurra algo. Ese algo hay que programarlo y para poder hacerlo hay que saber como manejar ese evento. Los eventos se manejan a travs de un conjunto de mtodos predeterminados en todos los componentes, pero para que un componente pueda responder a los eventos que sobre l pueden ocurrir, tiene que tener asociado el manejador o escuchador de esos eventos.
import javax.swing.*; import java.awt.*; import java.awt.event.*; public class AplicacionSwing extends JFrame { // referencias a los componentes // otras referencias private AplicacionSwing( String titulo ) { super(titulo); iniciarComponentes(); //ajustar el tamao de la ventana al minimo pack(); }
private void iniciarComponentes() { //permitir que la ventana de la aplicacin //responda a los eventos de ventana addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent evento) { cerrarVentana(); } }); }
private void cerrarVentana() { //salir de la aplicacin System.exit(0); } public static void main(String [] args) { AplicacinSwing vPpal = new AplicacionSwing(Aplicacin Swing); vPpal.show(); } } //de la aplicacin
En la programacin de aplicaciones Java, los IDE facilitan mucho al colocar una paleta de opciones para dibujar los componentes y su distribucin. El cdigo generado por el IDE cumple normalmente las reglas que se han visto para la creacin de eventos, listeners y clases. Crearemos una interfaz usando Netbeans.
Como se ve en la imagen anterior, despus de crear un proyecto nuevo, adicione un Formulario Jframe al paquete principal usando el men de contexto, llame a la clase JFrameAlumno
Area de trabajo
Propie dades
Ahora se puede iniciar colocando los componentes para dibujar su formulario, arrastrando un componente de la paleta sobre el rea de trabajo; luego de esto se puede adicionar las acciones para los eventos respectivos.
Al hacer clic derecho sobre el rea de trabajo, se puede seleccionar el Layout o disposicin que utilizar este contenedor.
Como se puede ver en la figura anterior, Netbeans posee un Layout propio que permite colocar los componentes en una posicin absoluta y adems posee los Layout estndar.
Note que al seleccionar un componente, sus propiedades se muestran y se pueden definir los valores que se quiere que tengan.
Con clic derecho sobre el componente, tambin se puede acceder a los mtodos que implementan el respectivo Listener del evento seleccionado.
Netbeans entonces pasa a la ventana origen y muestra el cdigo generado por esa accin, el cual es el cascarn del mtodo que se encargar de manejar el evento del jToggleButton.
El mtodo initComponents() es generado por Netbeans y no puede ser modificado, porque lo maneja automaticamente el IDE desde el editor Visual. Lo que s podemos modificar es el mtodo jToggleButtonActionPerformed que es donde se coloca la respuesta al evento generado.
El JFrame posee un mtodo main y crea una instancia de la clase para ejecutarse. El frame toma un valor y trae en mtodo setVisible, que hace posible observarlo cuando se corre el programa.
/** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ // <editor-fold defaultstate="collapsed" desc=" Cdigo Generado "> private void initComponents() { setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CL OSE); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { formWindowClosing(evt); } }); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout);
layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment. LEADING) .addGap(0, 400, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment. LEADING) .addGap(0, 300, Short.MAX_VALUE) ); pack();
}// </editor-fold> private void formWindowClosing(java.awt.event.WindowEvent evt) { // TODO: Agrege su codigo aqui: cerrarVentana(); } private void cerrarVentana()
{
System.exit(0); }
/** * @param args the command line arguments */ public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new AplicacionSwing().setVisible(true); } }); } // Declaracin de varibales -no modificar // Fin de declaracin de variables }
ItemHandler handler = new ItemHandler(); String colors[] = { "Blue", "Yellow", "Red" }; // set up popup menu and its items ButtonGroup colorGroup = new ButtonGroup(); popupMenu = new JPopupMenu(); items = new JRadioButtonMenuItem[ 3 ]; // construct each menu item and add to popup menu; // also enable event handling for each menu item for ( int count = 0; count < items.length; count++ ) { items[ count ] = new JRadioButtonMenuItem( colors[ count ] ); popupMenu.add( items[ count ] ); colorGroup.add( items[ count ] ); items[ count ].addActionListener( handler ); }
getContentPane().setBackground( Color.WHITE ); // declare a MouseListener for the window that //displays a JPopupMenu when the popup trigger //event occurs addMouseListener( new MouseAdapter() { // anonymous inner class // handle mouse press event public void mousePressed( MouseEvent event ) { checkForTriggerEvent( event ); } // handle mouse release event public void mouseReleased( MouseEvent event ) { checkForTriggerEvent( event ); }
// determine whether event should trigger popup menu private void checkForTriggerEvent( MouseEvent event ) { if ( event.isPopupTrigger() ) popupMenu.show( event.getComponent(), event.getX(), event.getY() ); } } // end anonymous inner clas ); // end call to addMouseListener setSize( 300, 200 ); setVisible( true ); } // end constructor PopupTest
public static void main( String args[] ) { PopupTest application = new PopupTest(); application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); } // private inner class to handle menu item events private class ItemHandler implements ActionListener { // process menu item selections public void actionPerformed( ActionEvent event ) { // determine which menu item was selected for ( int i = 0; i < items.length; i++ ) if ( event.getSource() == items[ i ] ) { getContentPane().setBackground( colorValues[ i ] ); return; } } } // end private inner class ItemHandler
} // end class PopupTest /**************************************** ********************************** * (C) Copyright 1992-2003 by Deitel & Associates, Inc. and * * Prentice Hall. All Rights Reserved. */
Preguntas?
Qu triste sera el mundo si todo en l estuviera hecho, si no hubiera un rosal que plantar, una empresa que emprender !...
phel