Anexob Swing

102
 Anexo B    Resumen de Clases SWING Por: Julio Vásquez Paragulla ([email protected]) 07/07/2010 www.parainformaticos.com  Página - 1 - Swing es el nombre clave del proyecto Java Foundation Class (JFC), que desarrolló los nuevos componentes java para mejorar la presentación de las Interfaces gráficas de usuario (GUI)I. Este proyecto estuvo a cargo de la empresa multinacional Sun Microsystems. Aunque no es un nombre oficial, frecuentemente se usa para referirse a los nuevos componentes. Para utilizarlo se debe importar la librería "  javax.swing .*" Swing es una versión mejorada del AWT  (Abstract Window Toolkit) y tiene muchas características nuevas, como las siguientes: Los botones y las etiquetas Swing pueden mostrar imágenes además del texto. Se pueden añadir o modificar fácilmente los bordes dibujados alrededor de casi cualquier componente Swing. Por ejemplo, es fácil poner un borde alrededor de un panel o una etiqueta. Se puede modificar fácilmente el comportamiento o la apariencia de un componente Swing llamando a métodos o creando una subclase. Los componentes Swing no tienen porque ser rectangulares. Por ejemplo, los botones pueden ser redondos. El frame es un contenedor principal que existe principalme nte para proporcion ar espacio para que se coloquen otros componentes Swing dentro de él. Los otros contenedores de alto nivel más utilizados son los diálogos ( JDialog) y los applets (JApplet). El panel (JPanel) es un contenedor intermedio. Su único propósito es simplificar el posicionamiento de los objetos. Otros contenedores intermedios, como los paneles desplazables, (JScrollPane ) y los paneles con pestañas ( JTabbedPane), típicamente juegan un papel más visible e interactivo en el GUI de un programa. Por defecto, cada contenedor tiene un controlador de distribución que es un objeto que realiza el control de la distribución de los componentes dentro del contenedor. Los componentes pueden proporcionarle al controlador de disposición sus preferencias en cuanto a tamaño y alineamiento, pero quien tiene la última palabra es el controlador de distribución del componente. Java, en su librería AWT, proporciona ocho controladores de disposición comunmente utilizados: BorderLayout, BoxLayout, FlowLayout, GridLayout, BoxLayout, CardLayout, GridBagLayout, y FreeDesing. Los ejemplos correspondientes a BorderLayout, FlowLayout, GridLayout , FreeDesign los puede ver en el capítulo anterior. Todos los objetos JPanel usan por defecto al FlowLayout como controlador de disposición. Por otro lado, los contenedores JApplet, JDialog, y JFrame usan el BorderLayout como controlador de disposición por defecto. Para cambiar la distribución por defecto de un JPanel , lo puede hacer al momento de instanciar al objeto, por ejemplo:  JPanel panel = new JPanel(new BorderLayout ()); También puede hacerlo utilizando el método setLayout() , por ejemplo: JPanel panel = new JPanel();

Transcript of Anexob Swing

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])Swing es el nombre clave del proyecto Java Foundation Class (JFC), que desarroll los nuevos componentes java para mejorar la presentacin de las Interfaces grficas de usuario (GUI)I. Este proyecto estuvo a cargo de la empresa multinacional Sun Microsystems. Aunque no es un nombre oficial, frecuentemente se usa para referirse a los nuevos componentes. Para utilizarlo se debe importar la librera "javax.swing.*" Swing es una versin mejorada del AWT (Abstract Window Toolkit) y tiene muchas caractersticas nuevas, como las siguientes: Los botones y las etiquetas Swing pueden mostrar imgenes adems del texto. Se pueden aadir o modificar fcilmente los bordes dibujados alrededor de casi cualquier componente Swing. Por ejemplo, es fcil poner un borde alrededor de un panel o una etiqueta. Se puede modificar fcilmente el comportamiento o la apariencia de un componente Swing llamando a mtodos o creando una subclase. Los componentes Swing no tienen porque ser rectangulares. Por ejemplo, los botones pueden ser redondos. El frame es un contenedor principal que existe principalmente para proporcionar espacio para que se coloquen otros componentes Swing dentro de l. Los otros contenedores de alto nivel ms utilizados son los dilogos (JDialog) y los applets (JApplet). El panel (JPanel) es un contenedor intermedio. Su nico propsito es simplificar el posicionamiento de los objetos. Otros contenedores intermedios, como los paneles desplazables, (JScrollPane) y los paneles con pestaas (JTabbedPane), tpicamente juegan un papel ms visible e interactivo en el GUI de un programa. Por defecto, cada contenedor tiene un controlador de distribucin que es un objeto que realiza el control de la distribucin de los componentes dentro del contenedor. Los componentes pueden proporcionarle al controlador de disposicin sus preferencias en cuanto a tamao y alineamiento, pero quien tiene la ltima palabra es el controlador de distribucin del componente. Java, en su librera AWT, proporciona ocho controladores de disposicin comunmente utilizados: BorderLayout, BoxLayout, FlowLayout, GridLayout, BoxLayout, CardLayout, GridBagLayout, y FreeDesing. Los ejemplos correspondientes a BorderLayout, FlowLayout, GridLayout , FreeDesign los puede ver en el captulo anterior. Todos los objetos JPanel usan por defecto al FlowLayout como controlador de disposicin. Por otro lado, los contenedores JApplet, JDialog, y JFrame usan el BorderLayout como controlador de disposicin por defecto. Para cambiar la distribucin por defecto de un JPanel, lo puede hacer al momento de instanciar al objeto, por ejemplo: JPanel panel = new JPanel(new BorderLayout()); Tambin puede hacerlo utilizando el mtodo setLayout(), por ejemplo: JPanel panel = new JPanel();

07/07/2010

www.parainformaticos.com

Pgina - 1 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])panel.setLayout(new BorderLayout()); A continuacin revisaremos las clases Swing ms utilizadas con su jerarqua de clases y herencia, sus datos, constructores y mtodos con los que le dn funcionabilidad a sus objetos. Clase JApplet: Jerarqua de clases y herencia: java.lang.Object java.awt.Component java.awt.Container java.awt.Panel java.applet.Applet javax.swing.JApplet Por herencia, la clase JApplet y sus clases descendientes pueden utilizar los datos y/o mtodos de las superclases Applet, Panel, Container, Component y Object de la librera awt. Esta clase es una versin extendida de la clase Applet que agrega soporte para la arquitectura de components JFC/Swing. La clase JApplet es ligeramente incompatible con la clase Applet. JApplet contiene a JRootPane como su nica clase descendiente. El getContentPane() sera el mtodo para agregar cualquier elemento al JApplet. Esto hace diferente al Applet, donde por ejm. para agregar un elemento se escribe: add(elemento); En cambio usando JApplet necesita agregar el elemento al contenedor as: getContentPane().add(elemento); Lo mismo es vlido para establecer LayoutManagers, remover componentes, listado de elementos, etc. Todos estos mtodos deberan ser normalmente enviados al contentPane() en lugar de ser enviados al JApplet mismo. El contentPane() siempre ser no nulo, de lo contrario se causar un error en el JApplet a travs de una excepcin. El contentPane() por defecto tendr el BorderLayout como forma de distribucin de los componentes.

Ejemplo 01: Disee un JApplet con un JPanel que tenga distribucin BoxLayout, como se muestra a continuacin:

07/07/2010

www.parainformaticos.com

Pgina - 2 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])

Nuevo proyecto de nombre Ejemplo01, nuevo paquete de nombre ejemplo01. Clic derecho en el paquete creado y elegimos nuevo JPanel Form de nombre PanelPrincipal donde hacemos el siguiente diseo: PanelPrincipal con distribucin BoxLayout tipo Y-Axis donde colocamos los objetos: una etiqueta, un scrollPane y encima una lista, un botn y una caja de texto. Observe la distribucin de los objetos y los nombres de variable utilizados.

Hay varias maneras de colocar los objetos en una distribucin BoxLayout. Estas las vemos en la propiedad Axis: X, Y, Line, Page. Nosotros elegiremos la Axis Y que permite colocar los objetos enforma vertical, en una sola columna. Para colocar los tems de la lista ubique la propiedad model y haga clic en el botn de puntos suspensivos.

07/07/2010

www.parainformaticos.com

Pgina - 3 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])

Ahora hacemos doble clic en el botn seleccionar para programar su accin: private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { int i=jList1.getSelectedIndex(); if(i>=0){ String color=jList1.getModel().getElementAt(i).toString(); jTextField1.setText(color); } } Cada elemento en una lista ocupa una posicin numrica entera. Para obtener esta posicin utilizamos el mtodo getSelectedIndex(). Cada lista est asociada a un modelo. Para obtener este modelo utilizamos el mtodo getModel(). Para obtener un elemento del modelo asociado a la lista utilizamos el mtodo getElementAt(). Sin embargo, ste mtodo retorna un objeto genrico de tipo Object, por eso lo convertimos a cadena con el mtodo toString(). Ahora vamos a crear un JApplet que contenga al panel: clic derecho en el paquete ejemplo01, New, Other, JApplet y le damos por nombre Principal. En el mtodo init() del JApplet escribimos lo siguiente para que el panel sea incorporado al applet. public void init() { getContentPane().add(new PanelPrincipal()); } Para ejecutar el applet, clic derecho en el applet Principal y elegimos run file. No intente ejecutarlo como aplicacin porque no es un frame. Para construir JApplets se recomienda hacer el diseo grfico en un JPanel y ste colocarlo en el contenedor del applet. Clase JButton: Jerarqua de clases y herencia: java.lang.Object java.awt.Component java.awt.Container javax.swing.JComponent javax.swing.AbstractButton javax.swing.JButton

07/07/2010

www.parainformaticos.com

Pgina - 4 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])

Por herencia, la clase JButton y sus clases descendientes (subclases directas) pueden utilizar los datos y/o mtodos de las superclases AbstractButton, JComponent de la librera swing y las superclases Container, Component y Object de la librera awt. Ejemplo 02: Disee una aplicacin con botones diversos con texto e conos y con texto de ayuda a modo de tip; es decir que al pasar el mouse sobre el botn aparezca un texto relativo a su accin como se muestra a continuacin. Elija distribucin BoxLayout para el JFrame.

Nuevo proyecto de nombre Ejemplo02, nuevo paquete de nombre ejemplo02, elegimos nuevo JFrame Form de nombre Principal. Como en sta aplicacin se van a utilizar imgenes, se recomienda colocarlos en una nueva carpeta de nombre images dentro de la carpeta Source Packages que genera la herramienta: Ahora, en el diseo visual, identificamos la propiedad con para cada botn, y elegimos la imagen correspondiente desde la carpeta images, as:

En la propiedad ToolTip de cada objeto tambin debe escribir el texto que quiere que aparesca cuando se pase el Mouse sobre el objeto. Principal con distribucin BoxLayout tipo X-Axis donde colocamos los botones. Observe la distribucin de los objetos y los nombres de variable utilizados.

07/07/2010

www.parainformaticos.com

Pgina - 5 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])Recuerde que para cambiar el texto de un objeto se hace clic derecho en el objeto y se elige Edit Text y para cambiar el nombre de variable de un objeto se hace clic derecho en el objeto y se elige Change name variable. Ahora vamos a programar cada botn: Doble clic en cada botn, uno por uno y escribimos lo que est en negrita: private void btnRojoActionPerformed(java.awt.event.ActionEvent evt) { getContentPane().setBackground(Color.red); } private void btnAzulActionPerformed(java.awt.event.ActionEvent evt) { getContentPane().setBackground(Color.blue); } private void btnBlancoActionPerformed(java.awt.event.ActionEvent evt) { getContentPane().setBackground(Color.white); }

Ya puede ejecutar su aplicacin. Clase JToggleButton: Jerarqua de clases y herencia: java.lang.Object java.awt.Component java.awt.Container javax.swing.JComponent javax.swing.AbstractButton javax.swing.JToggleButton Por herencia, la clase JToggleButton y sus clases descendientes (subclases directas) pueden utilizar los datos y/o mtodos de las superclases AbstractButton, JComponent de la librera swing y las superclases Container, Component y Object de la librera awt. La clase JToggleButton permite crear botones con doble estado: seleccionado o n seleccionado; de tal manera que cuando est

07/07/2010

www.parainformaticos.com

Pgina - 6 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])seleccionado cambia de apariencia.

Al hacer clic en el botn JToogleButton da la impresin que se queda presionado para diferenciarse con el boton que no se presion. Si desea tener esta apariencia de los botones debe elegir JToggleButton en lugar de JButton. La funcionalidad es la misma.

Clase JCheckBox: Jerarqua de clases y herencia: java.lang.Object java.awt.Component java.awt.Container javax.swing.JComponent javax.swing.AbstractButton javax.swing.JToggleButton javax.swing.JCheckBox Por herencia, la clase JCheckBox y sus clases descendientes (sublcases directas) pueden utilizar los datos y/o mtodos de las clases JToggleButton, AbstractButton, JComponent de la librera swing y las superclases Container, Component y Object de la librera awt. Una implementacin de un check box es cuando un tem puede ser seleccionado o deseleccionado y su estado se muestra al usuario. Por convencin, a la vez pueden ser seleccionados varios check boxes de un grupo.

07/07/2010

www.parainformaticos.com

Pgina - 7 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])Ejemplo 03: Disee una aplicacin que utilice diversos botones de CheckBox a eleccin del usuario en diferentes paneles, como se muestra a continuacin:

Nuevo proyecto de nombre Ejemplo03, nuevo paquete de nombre ejemplo03. Clic derecho en el paquete, elegimos nuevo JFrame Form de nombre Principal donde hacemos el siguiente diseo: Principal con distribucin BorderLayout. En la parte Oeste colocamos un panel (panPasaTiempos) con borde para el ttulo y con distribucin BoxLayout tipo Axis Y donde colocaremos los checks. En la parte Central del Principal colocamos otro panel (panResultados) con borde para el ttulo y un rea de texto dentro de un scrollPane para los resultados. En la parte Sur de Principal pondremos otro panel (panPeliculas) con borde para el ttulo y distribucin FlowLayout donde colocamos los check con conos. Observe la distribucin de los objetos y los nombres de variable utilizados.

07/07/2010

www.parainformaticos.com

Pgina - 8 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])Como se van a utilizar imgenes para los conos, no olvide colocarlos en su carpeta images dentro de la carpeta Source Package de ste ejemplo:

Si quiere cambiar la ubicacin de algn panel slo ubique la propiedad Direction y hgalo. Si quiere poner color de fondo a los paneles ubique la propiedad Background y hgalo. Sin embargo, para que los checks queden bien sobre el color de fondo del panel, deben tener la propiedad Opaque en false. La orden setOpaque(false) hace que el color de fondo del objeto sea transparente; de lo contrario el objeto aparecera con un color de fondo gris. Ahora vamos a programar la accin de cada check. En el check de Msica hacemos clic derecho, elegimos Events, Action, ActionPerformed. private void chkMusicaActionPerformed(java.awt.event.ActionEvent evt) { String eleccionPasaTiempos="Ud. eligi como Pasatiempos:\n"; String eleccionPeliculas = "\n\nUd. eligi como Pelculas:\n"; if (chkMusica.isSelected()) eleccionPasaTiempos += "musica,"; if (chkDeporte.isSelected()) eleccionPasaTiempos += "deporte,"; if (chkAventura.isSelected())

07/07/2010

www.parainformaticos.com

Pgina - 9 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])eleccionPasaTiempos += "aventura,"; if (chkTerror.isSelected()) eleccionPeliculas += "Terror,"; if (chkAccion.isSelected()) eleccionPeliculas += "Accin,"; if (chkComicas.isSelected()) eleccionPeliculas += "Cmicas,"; if (chkRomanticas.isSelected()) eleccionPeliculas += "Romnticas,"; // muestra la eleccin txtSalida.setText(eleccionPasaTiempos); txtSalida.append(eleccionPeliculas); } Hacemos lo mismo para los dems checks. Tambin puede elegir programar el Evento Change, stateChange. El efecto es el mismo. El contenido de la programacin de todos los checks debe ser el mismo para controlar el marcado o desmarcado de cualquiera de los checks. En este ejemplo, hemos colocado paneles dentro de un frame que tiene distribucin BorderLayout.

Ya puede ejecutar su aplicacin.

Clase JRadioButton: Jerarqua de clases y herencia: java.lang.Object java.awt.Component java.awt.Container javax.swing.JComponent

07/07/2010

www.parainformaticos.com

Pgina - 10 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])javax.swing.AbstractButton javax.swing.JToggleButton javax.swing.JRadioButton Por herencia, la clase JRadioButton y sus clases descendientes pueden utilizar los datos y/o mtodos de las superclases JToggleButton, JAbstractButton y JComponent de la librera swing y tambin de las superclases Container, Component y Object de la librera awt. La implementacin de un radio button permite que un item pueda ser seleccionado o deseleccionado mostrandose su estado al usuario cuando ste hace clic en l. Se debe utilizar un objeto ButtonGroup para agrupar los botones de los cuales solo uno puede ser seleccionado a la vez, a diferencia de los checks que se poda elegir varios a la vez como vimos en el ejemplo anterior. El objeto ButtonGroup es un agrupador lgico, no fsico. Para implementar los JRadioButton se debe crear un JPanel y agregar un borde con ttulo alrededor de los botones del grupo, como veremos en el ejemplo 4. Ejemplo 04: Disee una aplicacin con diversos radio button a eleccin del usuario usando diferentes paneles con borde de ttulo y color de fondo, como se muestra a continuacin: Los radio button permiten elegir UNA sla opcin de entre varias, a diferencia de los chekBox que permiten eligir VARIAS opciones a la vz.

Nuevo proyecto de nombre Ejemplo04, nuevo paquete de nombre ejemplo04. Clic derecho en el paquete creado, elegimos nuevo JPanel Form de nombre PanelPrincipal con distribucin BorderLayout. Agregamos un panel (pasaTiempos) con distribucin GridLayout: de 1 columna, colocamos en la parte Este del panel principal. A ste panel le ponemos un borde con ttulo y le agregamos un ButtonGroup y 3 radio button. Cada radio button debe tener la popiedad Opaque en false. En cada radiobutton ubicar la propiedad buttonGroup y asociarlo con el jButtonGroup1, as: 3 filas y lo

07/07/2010

www.parainformaticos.com

Pgina - 11 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])

Se necesita un ButtonGroup por cada agrupamiento de radio buttons. El ButtonGroup es solamente lgico, no fsico porque no se v en la GUI, sirve slamente para agrupar varios radio buttons y poder seleccionar slo uno a la vez. De no utilizar el ButtonGroup, los radio buttons funcionaran como checks, pero en forma de crculo. Luego agregamos otro panel (panResultados). A ste panel le ponemos un borde con ttulo y le agregamos un scrollPane con un rea de texto. Al rea de texto le ubicamos la propiedad Editable para ponerlo en false. Este panel ser ubicado en la parte central del panel principal. Luego agregamos otro panel (panPelculas) favoritas y lo colocamos en el sur del panel principal utilizando la propiedad Direction: South. A ste panel le ponemos borde con ttulo.Este panel tendr distribucin FlowLayout donde agregamos otro ButtonGroup y 3 radio button. Cada radio button debe tener la popiedad Opaque en false. En cada radiobutton ubicar la propiedad buttonGroup y asociarlo con el jButtonGroup2. No olvide copiar la carpeta images del ejemplo anterior en la carpeta src de ste ejemplo para seleccionar los conos de los radio button. Observe la distribucin de los objetos y los nombres de variable utilizados en cada uno de los paneles. Incluso se observa la distribucin de cada panel. Los ButtonGroup por no ser objetos visibles, sino lgicos, se ubican en Other Components.

07/07/2010

www.parainformaticos.com

Pgina - 12 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])

Ahora programamos la accin de cada radio button: Clic derecho en el radio button de Msica, elegimos Events, Change, stateChange. private void rbtMusicaStateChanged(javax.swing.event.ChangeEvent evt) { String eleccionPasaTiempo="Ud. eligi como Pasatiempo:\n"; String eleccionPelicula = "\n\nUd. eligi como Pelcula:\n"; if (rbtMusica.isSelected()) eleccionPasaTiempo += "musica"; if (rbtDeporte.isSelected()) eleccionPasaTiempo += "deporte"; if (rbtAventura.isSelected()) eleccionPasaTiempo += "aventura"; if (rbtTerror.isSelected()) eleccionPelicula += "Terror"; if (rbtAccion.isSelected()) eleccionPelicula += "Accin"; if (rbtComicas.isSelected()) eleccionPelicula += "Cmicas"; if (rbtRomanticas.isSelected()) eleccionPelicula += "Romnticas"; // muestra la eleccin txtSalida.setText(eleccionPasaTiempo); txtSalida.append(eleccionPelicula);

07/07/2010

www.parainformaticos.com

Pgina - 13 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])

} Hacemos lo mismo para los dems radio button. Ahora vamos a crear el frame de la aplicacin: clic derecho en el paquete creado ejemplo04, nuevo JFrame Form de nombre Principal. A ste frame le ponemos distribucin BorderLayout y para agregar nuestro panel principal en ste frame vamos al cdigo java del frame y escribimos lo que est en negrita dentro del constructor: public class Principal extends javax.swing.JFrame { public Principal() { initComponents(); add(new PanelPrincipal()); setSize(500,400); } Ya puede ejecutar su aplicacin. Si el panel lo quiere ver en un JApplet solamente tiene que crear un JApplet y en su contenedor colocar el panel principal como en el ejemplo01. Clase JComboBox : Jerarqua de clases y herencia: java.lang.Object java.awt.Component java.awt.Container javax.swing.JComponent javax.swing.JComboBox Por herencia, la clase JComboBox y sus claes descendientes (subclases directas) pueden utilizar los datos y/o mtodos de las superclases JComponent de la librera swing y de las superclases Container, Component y Object de la librera awt. Un objeto JComboBox es un componente que combina un botn o un texto editable y una lista drop-down. El usuario puede seleccionar un tem de la lista, el cual aparece como respuesta de seleccin al usuario. A continuacin, un resumen de la composicin de la clase JComboBox. Constructores JComboBox() Crea un JComboBox vaco.

JComboBox(ComboBoxModel aModel) Crea un JComboBox con los tems dados en el parmetro.

07/07/2010

www.parainformaticos.com

Pgina - 14 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])

JComboBox(Object[] items) Resumen de Mtodos

Crea un JComboBox con los items dados en el parmetro.

void addItem(Object anObject) Agrega un tem al final de su lista. Object getItemAt(int index) Retorna el tem correspondiente a la posicin dada como parmetro. int getItemCount() Retorna el nmero de tems que hay en la lista. int getSelectedIndex() Reorna la posicin del tem seleccionado en la lista. Object getSelectedItem() Retorna el tem seleccionado en la lista. void insertItemAt(Object anObject, int index) Inserta un tem en la posicin dada como parmetro. void removeAllItems() Remueve todos los tems de la lista. void removeItem(Object anObject) Remueve el tem dado como parmetro, de la lista. void removeItemAt(int anIndex) Remueve el tem cuya posicin se d como parmetro. boolean selectWithKeyChar(char keyChar) Selecciona el tem que corresponde cuyo primer character corresponde al character indicado como parmetro y retorna true si el tem fue encontrado de lo contrario retorna false. void setSelectedIndex(int anIndex) Selecciona el item cuya posicin se da como parmetro. void setSelectedItem(Object anObject) Selecciona el item dado como parmetro. Ejemplo 05: Disee una aplicacin donde seleccione de un JComboBox un color de fondo para aplicarlo a una etiqueta. Utilice un botn para restablecer el color original. En la parte inferior debe aparecer el color seleccionado, como se muestra a continuacin:

07/07/2010

www.parainformaticos.com

Pgina - 15 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])

Nuevo proyecto de nombre Ejemplo05, nuevo paquete de nombre ejemplo05. Clic derecho en el paquete, elegimos nuevo JPanel Form de nombre PanelPrincipal con distribucin GridLayout 31 columna, 3 filas donde colocamos un objeto JComboBox, un JToggleButton y una etiqueta que muestre el color elegido. Utilice la propiedad model para administrar el contenido del comboBox. Cambie ell texto del botn y de la etiqueta y cambie el nombre de variable de los objetos.

Observe la distribucin de los objetos y los nombres de variable utilizados. Ahora programamos la accin del JComboBox: Clic derecho en el objeto, Events, Item, ItemStateChanged: private void cboColorItemStateChanged(java.awt.event.ItemEvent evt) { // obtiene el index del item seleccionado int color = cboColor.getSelectedIndex(); // establece color de fondo segun eleccion switch(color){ case 1:

07/07/2010

www.parainformaticos.com

Pgina - 16 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])setBackground(Color.lightGray); break; case 2: setBackground(Color.blue); break; case 3: setBackground(Color.red); break; case 4: setBackground(Color.orange); break; } // muestra en la etiqueta el color elegido lblColor.setText(cboColor.getSelectedItem().toString()); } Ahora programamos la accin del botn: Clic derecho en el objeto, Events, Action, ActionPerformed: private void btnRestablecerActionPerformed(java.awt.event.ActionEvent evt) { setBackground(Color.white); // selecciona el item de index 0 del combo box cboColor.setSelectedIndex(0); } Ahora para colocar el panel principal en un frame hacemos clic derecho en el paquete y elegimos un nuevo JFrame Form, le ponemos como ttulo JComboBox y le aplicamos distribucin BorderLayout para colocar en su contenedor el panel principal escribiendo en su constructor lo que est en negrita: public class Principal extends javax.swing.JFrame { public Principal() { initComponents(); add(new PanelPrincipal()); setSize(500,400); } Ya puede ejecutar su aplicacin. Si quiere tener el panel principal en un JApplet slo tiene que crear un JApplet y colocar el panel en su contenedor como lo hicimos en el ejemplo01. La accin del ComboBox tambin puede programarse con el evento ActionPerformed, con slo dar doble clic en el objeto. Clase JColorChooser: Jerarqua de clases y herencia: java.lang.Object java.awt.Component

07/07/2010

www.parainformaticos.com

Pgina - 17 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])java.awt.Container javax.swing.JComponent javax.swing.JColorChooser JColorChooser proporciona un panel de control diseado para permitir que el usuario manipule y seleccione su color preferido y personalizado. A continuacin un resumen de su contenido.

Constructores JColorChooser() Crea un panel de color chooser con un color inicial blanco. Resumen de Mtodos Color getColor() Obtiene el color actual del choser color. void setColor(Color color) Establece el color actual al chooser color. void setColor(int c) Establece el color actual al chooser color. void setColor(int r, int g, int b) Establece el color actual al chooser color. Ejemplo 06: Disee una aplicacin para presentar al usuario una caja de dialogo para que seleccione el color de su preferencia, aplicndolo como color de fondo del panel principal, y en la parte inferior presentar botones para manipular dicha eleccin como se muestra a continuacin:

07/07/2010

www.parainformaticos.com

Pgina - 18 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])

Nuevo proyecto de nombre Ejemplo06, nuevo paquete de nombre ejemplo06. Clic derecho en el paquete creado, elegimos nuevo JPanel Form de nombre PanelPrincipal al que le pondremos distribucin BorderLayout: En el sur colocamos otro panel (panSur) con distribucin FlowLayout donde colocaremos los botones y en la parte central colocamos otro panel (panCentro) donde colocaremos un objeto JColorChooser que se encuentra en la paleta de Swing Windows: Observe la distribucin de los objetos y los nombres de variable utilizados. Recuerde que para cambiar de nombre a un objeto haga clic derecho en l y elija Change variable name y para cambiar el texto elija Edit text.

07/07/2010

www.parainformaticos.com

Pgina - 19 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])

Ahora vamos a programar los botones. Doble clic en el botn Aplicar para programar su accin: private void btnAplicarActionPerformed(java.awt.event.ActionEvent evt) { // obtiene el color elegido Color micolor = jColorChooser1.getColor(); // aplicar color elegido al panel central panCentro.setBackground(micolor); } Regresamos al diseo y hacemos doble clic en el botn Ocultar para programar su accin: private void btnOcultarActionPerformed(java.awt.event.ActionEvent evt) { jColorChooser1.setVisible(false); } Regresamos al diseo y hacemos doble clic en el botn Mostrar para programar su accin: private void btnMostrarActionPerformed(java.awt.event.ActionEvent evt) { jColorChooser1.setVisible(true); } Regresamos al diseo y hacemos doble clic en el botn Reiniciar para programar su accin: private void btnReiniciarActionPerformed(java.awt.event.ActionEvent evt) { // muestra el chooser color con color inicial blanco jColorChooser1.setVisible(true); jColorChooser1.setColor(new Color(255,255,255)); // actualiza color de fondo del panel central panCentro.setBackground(Color.white); } Regresamos al diseo y hacemos doble clic en el botn Modal para programar su accin: private void btnModalActionPerformed(java.awt.event.ActionEvent evt) { // obtiene el color actual del chooser Color micolor=jColorChooser1.getColor();

07/07/2010

www.parainformaticos.com

Pgina - 20 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])

// recibe el nuevo color elegido en forma modal micolor=jColorChooser1.showDialog(panCentro, "Mi Color Preferido", micolor); // actualiza color de fondo del panel central panCentro.setBackground(micolor); // actualiza chooser color no modal jColorChooser1.setColor(micolor); } Ahora vamos a crear un nuevo frame de nombre Principal. Clic derecho en el paquete ejemplo06, le ponemos un ttulo JColorChooser y le colocamos distribucin BorderLayout. Para colocar el panel principal en el contenedor del frame escribimos lo que est en negrita en su constructor: public class Principal extends javax.swing.JFrame { public Principal() { initComponents(); add(new PanelPrincipal()); setSize(600,500); } Ya puede ejecutar su aplicacin. Recuerde que para programar un botn le hacemos clic derecho, elegimos Events, Action, actionPerformed y nos llevar al cdigo donde se debe escribir el cdigo de la accin del botn. Tambin puede hacerlo con doble clic en el botn que se quiera programar. Si quiere tener un JApplet en lugar de un frame slo tiene que crear un JApplet y en su contenedor colocar el panel principal ya diseado.

Clase JFileChooser: Jerarqua de clases y herencia: java.lang.Object java.awt.Component java.awt.Container javax.swing.JComponent

javax.swing.JFileChooser Por herencia, la clase JFileChooser y sus clases descendientes, pueden utilizar los datos y/o mtodos de las superclases JComponent de la librera swing y de las superclases Container, Component y Object de la librera awt.

07/07/2010

www.parainformaticos.com

Pgina - 21 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])JFileChooser proporciona un mecanismo simple para que el usuario pueda elegir un archivo de una carpeta; tambin puede elegir solamente carpetas e inclusive ambos, dependiendo de la propiedad que uno elija. A continuacin un resumen de su contenido. Resumen de Datos static int CANCEL_OPTION Retorna valor si el botn cancel es elegido. static String CANCEL_SELECTION Instruccin para cancelar la actual seleccin. static int DIRECTORIES_ONLY Instruccin para mostrar solo directorios. static int ERROR_OPTION Retorna valor si ocurre un error. static int FILES_AND_DIRECTORIES Instruccin para mostrar archivos y directorios a la vez. static int FILES_ONLY Instruccin para mostrar solamente archivos. Constructores JFileChooser() Crea un JFileChooser apuntando al directorio por defecto del usuario. Resumen de Mtodos void changeToParentDirectory() Cambia el directorio para ser reemplazado por el actual directorio. File getCurrentDirectory() Retorna el actual directorio. String getDescription(File f) Retorna la descripcion del archivo dado como parmetro. Icon getIcon(File f) Retorna el icono para el archive dado como parmetro, dependiendo del sistema operativo. String getName(File f) Retorna el nombre del archivo. File getSelectedFile() Retorna el archive seleccionado. File[] getSelectedFiles() Retorna una lista de archivos seleccionado cuando el file chooser permite la multiple seleccin. boolean isFileHidingEnabled() Retorna true si los archivos ocultos no son vistos en el file chooser; de lo contrario, retorna false. void rescanCurrentDirectory() Refresca la lista de archivos en el actual directorio.

07/07/2010

www.parainformaticos.com

Pgina - 22 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])void setApproveButtonToolTipText(String toolTipText) Establece el texto del tooltip usado en el botn de aprobacin. void setDialogTitle(String dialogTitle) Establece el ttulo de la caja de dilogo. void setFileSelectionMode(int mode) Establece el permiso para seleccioanr solo archivos, solo directories o ambos. int showDialog(Component parent,String approveButtonT ext) Muestra la caja de dialogo del file chooser en el componente dado como parmetro y con el texto del botn de aprobacin.. int showOpenDialog(Component parent) Muestra la caja de dialogo Open del file chooser. Ejemplo 07: Disee una aplicacin donde muestre un botn, en la parte superior de un panel atravs del cual se permita mostrar la ventana de dialogo de un JFileChooser para seleccionar algn archivo cuyo nombre ser mostrado en una caja de texto, en la parte inferior del panel, como se muestra a continuacin:

Al hacer clic en el botn Aplicar JFileChooser debe aparecer la ventana de dialogo del JFileChooser mostrando las carpetas y archivos de su disco duro, similar a lo siguiente:

07/07/2010

www.parainformaticos.com

Pgina - 23 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])

Desde donde usted puede desplazarse por las carpetas y seleccionar algn archivo cuyo nombre y ruta sern capturados cuando haga clic en el botn Abrir y luego ser mostrado en una caja de texto del panel anterior. . En caso de abrir un archivo de imagen debe mostrarlo en la parte central. as:

07/07/2010

www.parainformaticos.com

Pgina - 24 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])

Es preciso mencionar que un JFileChooser no puede ser mostrado en un JApplet ya que los applets son lanzados por el browser de internet que por seguridad protege del cliente el uso de los recursos del servidor, en ste caso el disco duro. Por ello tenemos que utilizar un proyecto tipo Aplicacin en lugar de Applet; en el cual debemos desarrollar un panel principal y un frame principal para colocar en l al panel. Nuevo proyecto de nombre Ejemplo07, nuevo paquete de nombre ejemplo07. Clic derecho en el paquete creado, elegimos nuevo JPanel Form de nombre PanelPrincipal al que le damos distribucin BorderLayout. En la parte norte colocamos un botn, en la parte sur colocamos una caja de texto y en la parte central colocamos otro panel de nombre panCentro tambin con distribucin BorderLayout. En ste panel central colocamos un JScrollPane y encima un JLabel para que reciba la imagen. Se recomienda poner un JScrollPane antes para que aparezcan las barras de desplazamiento en el caso que el tamao de la foto sea mayor al tamao del label. Observe la distribucin de los objetos y los nombres de variable utilizados.

07/07/2010

www.parainformaticos.com

Pgina - 25 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])

Doble clic en el botn Aplicar para programar su accin: private void btnAplicarActionPerformed(java.awt.event.ActionEvent evt) { // crea un objeto de dialogo JFileChooser JFileChooser dlg= new JFileChooser(); // abre la ventana de dialogo int option= dlg.showOpenDialog(this); // si hace click en boton abrir del dialogo if(option == JFileChooser.APPROVE_OPTION) { // obtiene ruta y nombre de archivo seleccionado String file= dlg.getSelectedFile().getPath(); // si slo quisiera el nombre del archivo, debe usar getName() // muestra nombre de archivo txtArchivo.setText("Archivo: "+file); // carga imagen en el label central lblFoto.setIcon(new ImageIcon(file)); } } Ahora creamos un nuevo frame de nombre Principal, le ponemos un ttulo y una distribucin BorderLayout para escribir en su constructor lo que est resaltado en negrita: public class Principal extends javax.swing.JFrame { static int w=500, h=400; public Principal() {

07/07/2010

www.parainformaticos.com

Pgina - 26 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])initComponents(); add(new PanelPrincipal()); setSize(w,h); setLocation((getToolkit().getScreenSize().width - w)/2, (getToolkit().getScreenSize().height - h)/2); } Esta vez hemos puesto el setLocation para que el frame aparezca al centro de la pantalla. Si no desea que aparesca centrado, omitir las variables static y la orden setLocation. Ya puede ejecutar su aplicacin. Clase JFrame: Jerarqua de clases y herencia: java.lang.Object java.awt.Component java.awt.Container java.awt.Window java.awt.Frame javax.swing.JFrame Por herencia, la clase JFrame y sus clases descendientes (subclases directas) pueden utilizar los datos y/o mtodos de las superclases Frame, Window, Container, Component y Object de la librera awt. La clase JFrame es ligeramente incompatible con la clase Frame. Como todo otro contenedor de alto nivel de la librera Swing, un JFrame contiene un JRootPane como su nico elemento. El contentPane proporcionado por el rootpane debera, como una regla, contener todos los componentes que no sean menu mostrados por el JFrame. A diferencia del Frame, un JFrame tiene alguna nocin de como responder cuando el usuario intenta cerrar la ventana. El comportamiento por defecto es simplemente ocultar el JFrame cuando el usuario cierra la ventana. Para cambiar el comportamiento por defecto debe invocar al mtodo setDefaultCloseOperation(). A continuacin un resumen de su contenido.

Resumen de Datos static int EXIT_ON_CLOSE La salida por defecto al cerrar la ventana.

07/07/2010

www.parainformaticos.com

Pgina - 27 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])Constructores JFrame() JFrame(String title) Resumen de Mtodos Container getContentPane() Retorna el objeto contentPane. int getDefaultCloseOperation() Retorna la operacin que ocurre cuando el usuario hace la operacin de cerrar la ventana del frame. JMenuBar getJMenuBar() Retorna el menubar establecido en el frame. void remove(Component comp) Remueve el componente indicado como parmetro de ste contenedor. void setContentPane(Container contentPane) Establece la propiedad del contentPane. void setDefaultCloseOperation(int operation) Establece la operacin que suceder por defecto cuando el usuario cierre la ventana. void setJMenuBar(JMenuBar menubar) Establece el menubar para el frame. void setLayout(LayoutManager manager) Por defecto, la distribucin de los objetos de ste componente no debe cambiarse; en su lugar, debera ser cambiada la distribucin de los objetos de su contentPane, que generalmente ser un panel. Ejemplo 08: Disee una aplicacin con dos frames, uno de bienvenida y otro de despedida activados a travs de botones, como se muestra a continuacin: Crea un nuevo frame que es inicialmente invisible. Crea un nuevo frame con el ttulo indicado como parmetro, inicialmente invisible.

07/07/2010

www.parainformaticos.com

Pgina - 28 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])

Nuevo proyecto de nombre Ejemplo08, nuevo paquete de nombre ejemplo08. Clic derecho en el paquete creado, elegimos nuevo JPanel Form de nombre PanelPrincipal con distribucin BorderLayout. En el norte ponemos otro panel con distribucin FlowLayout para los botones, as:

Observe la distribucin de los objetos y los nombres de variable utilizados. Ahora clic derecho en el paquete para crear un nuevo JFrame Form de nombre FrameSaludo con distribucin BorderLayout en cuya parte central pondremos una etiqueta con una imagen como cono, as:

Observe la distribucin de los objetos y los nombres de variable utilizados.

07/07/2010

www.parainformaticos.com

Pgina - 29 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])

Otra vez, clic derecho en el paquete para crear otro JFrame Form de nombre FrameDespedida con distribucin BorderLayout en cuya parte central pondremos un JScrollPane y encima una etiqueta con una imagen como cono, as:

Observe la distribucin de los objetos y los nombres de variable utilizados.

Recuerde que para utilizar imgenes se recomienda ponerlas en una carpeta images dentro de la carpeta src del proyecto que estamos desarrollando.

Ahora, nuevamente clic derecho en el paquete para crear un nuevo JFrame Form de nombre Principal con distribucin BorderLayout en cuyo source escribimos lo que est en negrita: public class Principal extends javax.swing.JFrame { private FrameSaludo fs; private FrameDespedida fd; public Principal() { initComponents(); add(new PanelPrincipal(this)); setSize(200,200);

07/07/2010

www.parainformaticos.com

Pgina - 30 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])fs=new FrameSaludo(); fs.setSize(400,400); fs.setLocation(100,100); fs.setVisible(false); fd = new FrameDespedida(); fd.setSize(600,400); fd.setLocation(300,100); fd.setVisible(false); } public FrameSaludo getSaludo(){ return fs;} public FrameDespedida getDespedida(){ return fd;} Como puede ver, se declaran dos atributos privados para utilizar los frames, luego en el constructor colocamos el panel principal dando a su constructor el contexto grfico de ste frame (this) y definimos el tamao del frame. Luego creamos los frames de saludo y despedida colocando algunas propiedades como tamao, ubicacin y visibilidad. Finalmente escribimos el cdigo de los mtodos que retornan los objetos de los frames. Corregir el source del PanelPrincipal para que reciba el contexto grfico del frame. Escribimos lo que est en negrita, as: public class PanelPrincipal extends javax.swing.JPanel { Principal guip; public PanelPrincipal(Principal guip) { initComponents(); this.guip = guip; } Finalmente, programamos la accin de los botones que estn en el panel principal, as: private void btnSaludoActionPerformed(java.awt.event.ActionEvent evt) { guip.getSaludo().setVisible(true); guip.getDespedida().setVisible(false); } private void btnDespedidaActionPerformed(java.awt.event.ActionEvent evt) { guip.getSaludo().setVisible(false); guip.getDespedida().setVisible(true); } Cuando se tienen varios paneles y/o frames dentro de un mismo proyecto, se recomienda compilar todo el proyecto con la siguiente opcin: Build, Clean and Build Main Proyect.

07/07/2010

www.parainformaticos.com

Pgina - 31 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])

Ya puede ejecutar su aplicacin.

Clase JInternalFrame: Jerarqua de clases y herencia: java.lang.Object java.awt.Component java.awt.Container javax.swing.JComponent javax.swing.JInternalFrame Por herencia, la clase JInternalFrame y sus clases descendientes (subclases directas) pueden utilizar los datos y/o mtodos de la superclase JComponent de la librera swing y de las superclases Container, Component y Object de la librera awt. Esta clase permite tener objetos livianos que proporciona muchas de las caractersticas de un Frame, incluyendo desplazamiento, cierre, insersion de iconos, redimensionamiento, titulo y soporte para un menu bar. El contentPane es manejado por una instancia de la clase JRootPane, la cual maneja una distribucin de objetos y opcionalmente un menu bar para el frame interno. Se recomienda el uso de un JDesktopPane para colocar los frames internos. A continuacin un resumen de su contenido.

07/07/2010

www.parainformaticos.com

Pgina - 32 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])

Constructores JInternalFrame() Crea un frame interno no redimensionable, no cerrable, no maximizable, no iconificable y sin titulo. Crea un frame interno no redimensionable, no cerrable, no maximizable, no iconificable y con el ttulo indicado como parmetro. Crea un frame interno no cerrable, no maximizable, no iconificable, pero con ttulo y redimensionable.

JInternalFrame(String title)

JInternalFrame(String title, boolean resizable) JInternalFrame(String title, boolean resizable, boolean closable) JInternalFrame(String title, boolean resizable, boolean closable, boolean maximizable) Resumen de Mtodos

Crea un frame interno no maximizable, no iconificable pero con ttulo, redimensionable y cerrable.

Crea un frame interno no iconificable pero con ttulo, redimensionable, cerrable y maximizable segn los parmetros indicados.

void dispose() Hace al frame interno invisible, no seleccionado y cerrado. Container getContentPane() Retorna el content pane. Icon getFrameIcon() Retorna el icon mostrado en la linea de ttulo del frame interno. JMenuBar getJMenuBar() Retorna el JMenuBar del frame interno, o nulo si no tiene menu.. String getTitle() Retorna el ttulo. boolean isClosable() Retorna true si el frame interno es cerrable; de lo contrario retorna false. boolean isClosed() Retorna true si el frame interno est cerrado; de lo contrario retorna false. boolean isIcon() Retorna true si el frame interno tiene cono; de lo contrario retorna false. boolean isMaximizable() Obtiene el valor de la propiedad maximizable. boolean isMaximum()

07/07/2010

www.parainformaticos.com

Pgina - 33 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])Returna true si el frame interno est maximizado; de lo contrario retorna false. boolean isResizable() Retorna true si el frame interno es redimensionable; de lo contrario retorna false. boolean isSelected() Retorna true si el frame interno est seleccionado; de lo contrario retorna false. void remove(Component comp) Remueve el componente dado como parmetro de su contenedor. void setClosable(boolean b) Hace cerrable al frame interno si el valor del parmetro dado es true. void setClosed(boolean b) Cierra al frame interno si el valor del parmetro dado es true. void setDefaultCloseOperation(int operation) Define la operacin que debe suceder por defecto cuando el usuario cierra el frame interno. El valor por defecto es HIDE_ON_CLOSE. Otros posibles valores son DO_NOTHING_ON_CLOSE y DISPOSE_ON_CLOSE. void setFrameIcon(Icon icon) Establece el cono en el frame interno. void setJMenuBar(JMenuBar m) Establece el menuBar del frame interno con el men dado como parmetro. void setLayout(LayoutManager manager) Establece una distribucin diferente a la establecida por defecto. void setMaximizable(boolean b) Establece la propiedad maximizable a travs del valor dado como parmetro. void setMaximum(boolean b) Maximiza el frame interno. void setResizable(boolean b) Establece la propiedad resized a travs del valor dado como parmetro. void setSelected(boolean selected) Selecciona o deselecciona el frame interno, segn el valor del parmetro. void setTitle(String title) Establece el ttulo del frame interno. void show()

07/07/2010

www.parainformaticos.com

Pgina - 34 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])Muestra el frame interno. void toBack() Enva al frame interno hacia atrs. void toFront() Enva el frame interno hacia delante. Ejemplo 09: Disee una aplicacin que permita, a travs de un botn colocar frames internos dentro del frame principal.Por cada frame que se crea debe asignarse un nmero correlativo. En la parte inferior colocar otro botn para cerrar todos los frames que fueron creados.

Nuevo proyecto de nombre Ejemplo09, nuevo paquete de nombre ejemplo09. Clic derecho en el paquete creado y elegir nuevo JFrame Form de nombre Principal. Clic en el frame creado, ponerle un texto en la propiedad title. Clic derecho en el frame creado y darle distribucin BorderLayout. En el centro colocar un panel (panPrincipal) con distribucin BorderLayout . En el norte colocar un botn para crear los InternalFrame, en el sur colocar otro botn para cerrar los InternalFrame, en el centro colocar un JScrollPane y encima un JDesktopPane. Observe la distribucin de los objetos y los nombres de variable utilizados.

07/07/2010

www.parainformaticos.com

Pgina - 35 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])

El JDesktopPane es imprescindible en un frame que va a contener InternalFrames. El scrollPane contiene al desktop porque el contenido de ste puede sobrepasar su dimensin y en ese caso aparecen las barras de desplazamiento.

Ahora vamos al cdigo fuente del frame principal para declarar dos atributos: un contador y una posicin inicial donde aparecer el primer InternalJrame. public class Principal extends javax.swing.JFrame { private int contador=1; private int posicion=0; public Principal() { initComponents(); setSize(400,400); } Ahora regresamos al diseo y hacemos doble clic en el botn Crea para programar su accin: private void btnCreaActionPerformed(java.awt.event.ActionEvent evt) { creaInternalFrame(); } public void creaInternalFrame(){ JInternalFrame f = new JInternalFrame("InternalFrame "+contador, true, // cambia tamao true, // se cierra true, // maximizable true // minimizable ); f.setLocation(posicion*50 + 10, posicion*50+10); desktop.setPreferredSize(new Dimension(400+(posicion*50), 400+(posicion*50))); f.setSize(200,150); f.setBackground(new Color(200,255,255));// color de fondo desktop.add(f); // coloca en el frame f.setVisible(true); // lo hace visible en primer plano contador++; posicion++; } Regresamos al diseo y hacemos doble clic en el botn Cierra para programar su accin: private void btnCierraActionPerformed(java.awt.event.ActionEvent evt) { desktop.removeAll();

07/07/2010

www.parainformaticos.com

Pgina - 36 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])desktop.updateUI(); contador=1; posicion=0; } Cada InternalFrame puede ser redimensionable, cerrable, maximizable y minimizable dentro del frame principal. El uso de un frame interno (JInternalFrame) es mucho mas prctico y fcil de implementar, respecto a los JFrames. Adems, podemos tener varios frames internos dentro de un escritorio, los cuales se maximizarn dentro de los lmites del escritorio.Sin embargo, el frame normal es mucho ms atractivo en su apariencia como lo vimos en el ejemplo anterior. Usted tiene que elegir lo mas conveniente segn los requerimientos de su programa. Ya puede ejecutar su aplicacin.

Clase JLabel: Jerarqua de clases y herencia: java.lang.Object java.awt.Component java.awt.Container javax.swing.JComponent javax.swing.JLabel Por herencia la clase JLabel y sus clases descendientes (subclases directas) pueden utilizar los datos y/o mtodos de la superclase JComponent de la librera swing y las superclases Container, Component y Object de la librera awt. Un JLabel o tambin conocido como etiqueta es un area que permite mostrar un texto, una imagen o ambos. Una etiqueta no reacciona a eventos de ingreso. Como consecuencia, no puede obtener el enfoque del teclado. Un objeto JLabel puede mostrar texto, imagen, o ambos. Usted puede especificar en que lugar de la etiqueta mostrar su contenido utilizando alineamiento vertical y horizontal. Por defecto, las etiquetas tienen alineamiento vertical centrado para el texto y alineamiento horizontal centrado para las imgenes. Usted tambin puede especificar la posicin del texto relative a la imagen. Por defecto, el texto esta en la direccin de la imagen con el texto e imagen alineados verticalmente. Finalmente, usted puede utilizar el mtodo setIconTextGap() para especificar cuntos pixels deben separar al texto de la imagen. Por defecto son 4 pixels.

07/07/2010

www.parainformaticos.com

Pgina - 37 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])Ejemplo 10: Disee una aplicacin con diversas botones que permitan mostrar el contenido de una etiqueta con imagen, con texto, con ambos y con varias lineas para poder apreciar la versatilidad de los objetos JLabel, como se muestra a continuacin.

Nuevo proyecto de nombre Ejemplo10, nuevo paquete de nombre ejemplo10. Clic derecho en el paquete creado para elegir un nuevo JPanel Form de nombre PanelPrincipal con distribucin BorderLayout donde colocamos los siguientes objetos:

Observe la distribucin de los objetos y los nombres de variable utilizados. Regresamos al diseo y doble clic en el botn Slo Texto para programar su accin. private void btnTextoActionPerformed(java.awt.event.ActionEvent evt) { lblEtiqueta.setForeground(new Color(210,10,210)); lblEtiqueta.setFont(new Font("Comics",Font.ITALIC,16)); lblEtiqueta.setText("Slo Texto"); }

07/07/2010

www.parainformaticos.com

Pgina - 38 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])

Regresamos al diseo y doble clic en el botn Texto e Imagen para programar su accin. private void btnTextoImagenActionPerformed(java.awt.event.ActionEvent evt) { lblEtiqueta.setIcon(new ImageIcon( getClass().getResource("/images/imagen2.jpg"))); lblEtiqueta.setFont(new Font( "Times Roman",Font.ITALIC+Font.BOLD,14)); lblEtiqueta.setForeground(new Color(10,10,250)); lblEtiqueta.setText("Que hermosura!!"); } Regresamos al diseo y doble clic en el botn Slo Imagen para programar su accin. private void btnImagenActionPerformed(java.awt.event.ActionEvent evt) { lblEtiqueta.setIcon(new ImageIcon( getClass().getResource("/images/imagen1.jpg"))); lblEtiqueta.setFont(new Font("Times Roman",Font.ITALIC+Font.BOLD,14)); } Regresamos al diseo y doble clic en el botn MultiLinea para programar su accin. private void btnMultiLineaActionPerformed(java.awt.event.ActionEvent evt) { String texto="Para crear una etiqueta " + "Swing se tiene 4 alternativas:" + "

  • " + "
  • Slo Texto" + "
  • Slo Imagen" + "
  • Texto con Imagen, y" + "
  • Multilnea, como sta" + "

"+ "
"+ "Cada alternativa lo puede probar con los botones "+ "de ste JApplet."; lblEtiqueta.setIcon(new ImageIcon( getClass().getResource("images/imagen3.gif"))); lblEtiqueta.setFont(new Font("Arial",Font.PLAIN,14)); lblEtiqueta.setForeground(new Color(10,10,250)); lblEtiqueta.setText(texto); } Recuerde que las imgenes deben estar en una carpeta images dentro de la carpeta src del proyecto que se est desarrollando. Sin embargo, el cdigo adecuado para abrir una imagen es con getClass().getResource() para que la imagen sea encontrada cuando la aplicacin se ejecute desde su archivo jar. As: lblEtiqueta.setIcon(new ImageIcon( getClass().getResource("/images/imagen1.jpg"))); Ahora, vamos a crear un frame donde se colocar el panel que acabamos de programar. Clic derecho en el paquete creado, elegir un nuevo JFrame Form de nombre Principal con distribucin BorderLayout. En su propiedad title escribimos JLabel y luego vamos al cdigo fuente para escribir lo que esta en negrita: public class Principal extends javax.swing.JFrame { static int w=500, h=400;

07/07/2010

www.parainformaticos.com

Pgina - 39 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])public Principal() { initComponents(); add(new PanelPrincipal()); setSize(w,h); setLocation((getToolkit().getScreenSize().width - w)/2, (getToolkit().getScreenSize().height - h)/2); } Para los botones hemos puesto JTogleButton. Sin embargo, usted puede colocar botones JButton. Como dijimos antes, tienen la misma funcionalidad. Slo se diferencian por la apariencia. Ya puede ejecutar su aplicacin. Clase JList: Jerarqua de clases y herencia: java.lang.Object java.awt.Component java.awt.Container javax.swing.JComponent javax.swing.JList Por herencia, la clase JList y sus clases descendientes (subclases directas) pueden utilizar los datos y/o mtodos de la superclase JComponent de la librera swing y de las superclases Container, Component y Objet de la librera awt. JList es un componente que permite al usuario seleccionar uno o ms objetos de una lista. Necesita de un objeto modelo de la clase ListModel o DefaultListModel, quien representar el contenido de la lista. Es fcil crear una lista con un arreglo o un vector de objetos, por ejemplo, para crear un JList que contenga las cadenas definidas en un arreglo de cadenas, solamente haramos lo siguiente: String[] datos = {"uno", "dos", "tres", "cuatro"}; JList lstDatos = new JList(datos); En este caso, como puede ver no se ha utilizado explicitamente el objeto modelo ya que el constructor del JList crea uno automticamente de acuerdo al arreglo de cadenas. Para agregar mas cadenas, debe hacerse en el modelo (datos) cuyo contenido se reflejar en la lista. Para mostrar los datos de la lista bastara con escribir lo siguiente: for(int i = 0; i < lstDatos.getModel().getSize(); i++) { Imprimir(lstDatos.getModel().getElementAt(i)); }

07/07/2010

www.parainformaticos.com

Pgina - 40 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])JList no soporta scroll directamente. Para crear un scrolling en la lista debe colocar, obligatoriamente, a la lista en un objeto JScrollPane. Por ejemplo: JScrollPane scrollPane = new JScrollPane(lstDatos); O de esta otra forma: JScrollPane scrollPane = new JScrollPane(); scrollPane.getViewport().setView(lstDatos); Por defecto el JList permite la seleccin mltiple. Sin embargo, tambin provee de los mtodos necesarios para administrar la seleccin simple, por ejemplo: String[] datos = {"uno", "dos", "tres", "cuatro"}; JList lstDatos = new JList(datos); lstDatos.setSelectedIndex(1); lstDatos.getSelectedValue(); // selecciona "dos" // retorna "dos"

El contenido de un JList puede ser dinmico, en otras palabras, la lista de elementos pueden cambiar de valor y el tamao de la lista tambin puede cambiar despus de hacer sido creada.. Los cambios que ocurren en un JList son registrados por la interface ListDataListener. Un JList no proporciona un soporte especial para el manejo del doble click, sin embargo es fcil su manejo a travs de la interface MouseListener. A continuacin un resumen de su contenido. Constructores JList() JList(ListModel dataModel) JList(Object[] listData) JList(Vector listData) Resumen de Mtodos void clearSelection() Limpia la seleccin. int getMaxSelectionIndex() Retorna el ndice de la celda ms larga. int getMinSelectionIndex() Retorna el ndice de la celda ms corta. int getSelectedIndex() Retorna el ndice del primer item seleccionado en la lista. Retorna -1 si no hay algn item seleccionado. int[] getSelectedIndices() Returna un arreglo de todos los ndices correspondientes a los tems seleccionados. Crea un JList vaco. Crea un JList cuyos elementos estan contenidos en el modelo dado como parmetro. Crea un JList cuyos elementos estan contenidos en el arreglo dado como parmetro. Crea un JList cuyos elementos estan contenidos en el vector dado como parmetro.

07/07/2010

www.parainformaticos.com

Pgina - 41 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])Object getSelectedValue() Retorna el valor del primer tem seleccionado, o null si la seleccin est vaca. Object[] getSelectedValues() Retorna un arreglo de todos los valores correspondientes a los tems seleccionados. int getSelectionMode() Retorna el valor correspondiente al modo de seleccin permitida: simple=0 o mltiple=2. String getToolTipText(MouseEvent event) Obtiene el texto establecido como tooltip. int getVisibleRowCount() Retorna el nmero de filas visibles. boolean isSelectedIndex(int index) Retorna true si el index indicado est seleccionado. boolean isSelectionEmpty() Retorna true si no hay seleccin de algn tem. void removeSelectionInterval(int index0, int index1) Deselecciona los items comprendidos en el intervalo dado como parmetros. void setLayoutOrientation(int layoutOrientation) Define la orientacin de la lista, horizontal o vertical. void setListData(Object[] listData) Establece como contenido de la lista el contenido del arreglo dado como parmetro. void setListData(Vector listData) Establece como contenido de la lista el contenido del vector dado como parmetro. void setModel(ListModel model) Establece como contenido de la lista el contenido del modelo dado como parmetro. void setSelectedIndex(int index) Selecciona la celda correspondiente al index dado como parmetro. void setSelectedIndices(int[] indices) Selecciona las celdas correspondientes a los indices contenido en el arreglo dado como parmetro. void setSelectedValue(Object anObject, boolean shouldScroll) Selecciona el item indicado como parmetro. void setSelectionBackground(Color selectionBackground) Establece el color de fondo para las celdas seleccionadas. void setSelectionForeground(Color selectionForeground) Establece el color de frente par alas celdas seleccionadas.

07/07/2010

www.parainformaticos.com

Pgina - 42 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])void setSelectionInterval(int anchor, int lead) Selecciona los items del intervalo dado como parmetro. void setSelectionMode(int selectionMode) Establece la forma de seleccin: simple=0 o mltiple=2.

Ejemplo 11: Disee una aplicacin que considere una lista para colocar nombres ingresados e implementar botones para administar dicha lista, agregando y/o sacando nombres en forma simple o en forma multiple. Por defecto que sea mltiple. Si se intenta agregar un nombre vaco mostar una ventana de dilogo informativa, igualmente cuando se intenta sacar un nombre que no fue seleccionado, igualmente cuando se intenta sacar nombres cuando la lista est vaca, como se aprecia a continuacin:

Nuevo proyecto de nombre Ejemplo11, nuevo paquete de nombre ejemplo11. Clic derecho en el paquete creado para elegir nuevo JPanel Form de nombre PanelPrincipal donde hacemos el siguiente diseo. PanelPrincipal con distribucin BorderLayout. En el norte colocamos otro panel de nombre panNorte con distribucin BoxLayout Axis X donde colocamos la etiqueta Nombre y una caja de texto. En el sur colocamos una etiqueta para el contador de la lista y en el centro colocamos otro panel de nombre panCentro con distribucin GridLayout de 1 fila, 2 columnas, en la primera columna colocamos un JScrollPane y encima un JList y en la segunda columna colocamos otro panel de nombre panBotones con distribucin GridLayout de 4 filas, 1 columna donde colocamos los botones.

07/07/2010

www.parainformaticos.com

Pgina - 43 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])Utilice la propiedad model de la lista lstNombres para eliminar (remover) todos los tems por defecto hasta que la lista quede vaca.

Observe la distribucin de los objetos y los nombres de variable utilizados.

Ahora vamos al cdigo fuente (source) del PanelPrincipal para declarar el modelo que debe representar a la lista de nombres. Escribimos lo que est en negrita: public class PanelPrincipal extends javax.swing.JPanel { DefaultListModel modNombres; public PanelPrincipal() { initComponents(); modNombres=new DefaultListModel(); lstNombres.setModel(modNombres); } Ahora regresamos al diseo para programar la accin de cada botn, haciendo doble clic en cada uno de ellos. private void btnAgregarActionPerformed(java.awt.event.ActionEvent evt) { String nombre = txtNombre.getText(); if (nombre.length()==0) JOptionPane.showMessageDialog(this,"Debe ingresar un nombre!");

07/07/2010

www.parainformaticos.com

Pgina - 44 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])else{ modNombres.addElement(nombre); txtNombre.setText(""); } lblEnLista.setText("En Lista: "+modNombres.size()); txtNombre.requestFocus(); } private void btnSacarActionPerformed(java.awt.event.ActionEvent evt) { if (modNombres.size()==0) JOptionPane.showMessageDialog(this, "Lista est vaca!"); else if (lstNombres.getSelectionMode()!=0) { // es de seleccion multiple // verifica seleccion de items if (lstNombres.isSelectionEmpty()) JOptionPane.showMessageDialog(this, "Debe Seleccionar por lo menos un nombre!"); else{ // obtiene la cantidad de items en la lista int items=modNombres.getSize(); // inicializa el indice a analizar int indice=0; do { // mientras el indice este seleccionado while (lstNombres.isSelectedIndex(indice) ){ // coloca el nombre del indice en el txtNombre txtNombre.setText(modNombres.getElementAt(indice).toString()); // saca el item correspondiente al indice modNombres.remove(indice); // disminuye en uno cantidad de items en la lista items--; }// fin del while // aumenta en uno el indice a analizar indice++; } while (items>indice); // mientras haya items por analizar } // actualiza cuantos hay en lista lblEnLista.setText("En Lista: "+modNombres.size()); } else // es de seleccion simple if (lstNombres.isSelectionEmpty()) JOptionPane.showMessageDialog(this, "Debe Seleccionar un nombre!"); else { // obtiene el indice del item seleccionado int indice=lstNombres.getSelectedIndex(); // obtiene el nombre de la lista String nombre = lstNombres.getSelectedValue().toString(); // coloca el nombre en el txtNombre txtNombre.setText(nombre); // saca el item correspondiente al indice modNombres.remove(indice); }

07/07/2010

www.parainformaticos.com

Pgina - 45 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])// actualiza cuantos hay en lista lblEnLista.setText("En Lista: "+modNombres.size()); } private void btnMultipleActionPerformed(java.awt.event.ActionEvent evt) { btnMultiple.setEnabled(false); btnSimple.setEnabled(true); lstNombres.setSelectionMode(2); } private void btnSimpleActionPerformed(java.awt.event.ActionEvent evt) { btnSimple.setEnabled(false); btnMultiple.setEnabled(true); lstNombres.setSelectionMode(0); } Una lista se vuelve de seleccin mltiple poniendo el valor 2 en el mtodo setSelectionMode() y se vuelve de seleccin simple poniendo el valor 0 en el mismo mtodo. Ahora vamos a crear un nuevo JFrame Form de nombre Principal para colocar en l nuestro panel principal en forma centrada. public class Principal extends javax.swing.JFrame { static int w=500, h=400; public Principal() { initComponents(); add(new PanelPrincipal()); setSize(w,h); setLocation((getToolkit().getScreenSize().width - w)/2, (getToolkit().getScreenSize().height - h)/2); } El modelo de lista es el que mantendr el contenido de la lista y segn l se reflejar en el objeto lista el cual a su vez estar contenido en un JScrollPane para que se activen las barras de scroll cuando sea necesario segn el contenido de la lista. Se agrega y/o se saca del modelo de la lista lo que se ver reflejado en el contenido de la lista. La clase JOptionPane es utilizada para mostrar ventanas de dilogo. Ya puede ejecutar su aplicacin. Clase JMenuItem: Jerarqua de clases y herencia: java.lang.Object java.awt.Component java.awt.Container

07/07/2010

www.parainformaticos.com

Pgina - 46 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])

javax.swing.JComponent javax.swing.AbstractButton javax.swing.JMenuItem Por herencia, la clase JMenuItem y sus clases descendientes (subclases directas) pueden utilizar los datos y/o mtodos de las superclases AbstractButton, JComponent de la librera swing, y de las superclases Container, Component y Object de la librera awt. Un menu item es esencialmente un botn colocado en una lista. Cuando el usuario selecciona el "boton", la accin asociada con el menu item es ejecutada. Un JMenuItem contenido en un JPopupMenu cumple exactamente esa funcin.

Clase JMenu: Jerarqua de clases y herencia: java.lang.Object java.awt.Component java.awt.Container javax.swing.JComponent javax.swing.AbstractButton javax.swing.JMenuItem javax.swing.JMenu Por herencia, la clase JMenu y sus clases descendientes (subclases directas) pueden utilizar los datos y/o mtodos de las superclases JMenu, JMenuItem, AbstractButton, JComponent de la librera swing y de las superclases Container, Component y Objet de la librera awt.

07/07/2010

www.parainformaticos.com

Pgina - 47 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])La implementacin de un menu muestra ventanas popup conteniendo JMenuItems que son mostrados cuando el usuario selecciona un item del JMenuBar. Adicionalmente a los JMenuItems, un JMenu tambin puede contener JSeparators. Clase JMenuBar: Jerarqua de clases y herencia: java.lang.Object java.awt.Component java.awt.Container javax.swing.JComponent javax.swing.JMenuBar Por herencia, la clase JMenuBar y sus clases descendientes (subclases directas) pueden utilizar los datos y/o mtodos de la superclase JComponent de la librera swing y de las superclases Container, Component y Objet de la librera awt. La implementacin de un menu bar implica que usted agrega un objeto JMenu al menu bar para construir un menu. Cuando el usuario selecciona un objeto JMenu, su JPopupMenu asociado es mostrado, permitiendo al usuario seleccionar uno de los JMenuItems.

Ejemplo 12: Disee una aplicacin que permita gestionar opciones de menu con sus respectivos menu items que tengan la siguiente apariencia:

07/07/2010

www.parainformaticos.com

Pgina - 48 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])

Los men tems Bsico e Intermedio tienen teclas de atajo (aceleradoras), el men item CheckBox est habilitado, el men item RadioButton tambin est habilitado por defecto y el men Mas Ejemplos tiene 3 menu items. El men item Bsico tiene una letra subrayada a lo cual se le conoce como nemnic y permite acceder a esa opcin combinando las taclas ALT y la letra subrayada. Los men tems Basico e Intermedio deben programarse para que hagan aparecer un panel con una etiqueta y un botn de regreso. Como se muestra a continuacin:

07/07/2010

www.parainformaticos.com

Pgina - 49 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])

La opcin Salir debe programarse para que confirme la salida a travs de una ventana de dilogo. Como se muestra a continuacin:

Las teclas de atajo (aceleradoras) generalmente van combinadas con la tecl CTRL. En cambio las teclas nemonic van combinadas con la tecla ALT. Para definir las teclas nemnic puede acceder a las propiedades del men item correspondiente. Nuevo proyecto de nombre Ejemplo12, nuevo paquete de nombre ejemplo12. Clic derecho en el paquete creado y seleccionamos nuevo JFrame Form de nombre MiMenu. En la propiedad title le ponemos un ttulo de mens y le ponemos distribucin BorderLayout. En la ventana palette ubicada en la parte derecha ubicamos las clases relacionadas al manejo de mens (Swing Menus): Menu Bar, Menu, Menu Item, Menu Item/CheckBox, Menu Item/RadioButton, Popup Menu, Separator.

07/07/2010

www.parainformaticos.com

Pgina - 50 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])

Primero colocamos en nuestro frame un men bar:

Para cambiar el texto de las opciones por defecto del men bar, hacemos clic derecho en la opcin y elegimos Edit Text:

Ahora colocamos men tems en la opcin de Ejemplos: Clic derecho en la variable o en el objeto, Add From Palette, Men Item.

Se obtiene lo siguiente:

Ahora, cambiamos el texto del men item y hacemos doble clic en shortcut para elegir la tecla de atajo (aceleradora) correspondiente:

07/07/2010

www.parainformaticos.com

Pgina - 51 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])

Al dar clic en el bot OK, se obtiene lo siguiente:

Si queremos acompaar de alguna imagen al men item, hacemos doble clic en el recuadro en blanco para elegir la imagen correspondiente. Hacemos lo mismo hasta completar lo siguiente:

Observe que la ltima opcin no es un men item sino un Men porque va a contener otras opciones que vendran a ser sus men tems. Slo los men tems sern finalmente programados para que ocurra alguna accin.

07/07/2010

www.parainformaticos.com

Pgina - 52 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])

Hacemos lo mismo con el men Opciones para conseguir lo siguiente:

Ahora vamos a programar la tecla nemnic para el men item Bsico. Clic derecho para ir a sus propiedades, ubicamos la propiedad nemnic, clic en el botn de puntos suspensivos y llegamos a la siguiente ventana, elegimos Custom code y nos presenta la llamada al mtodo correspondiente para completar la tecla nemnica que se quiere utilizar. En ste caso escribimos java.awt.event.KeyEvent.VK_B y damos clic en el botn OK.

Antes de programar la accin de los men item Bsico e Intermedio vamos a crear sus paneles correspondientes.

07/07/2010

www.parainformaticos.com

Pgina - 53 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])Clic derecho en el paquete ejemplo12 y elegimos nuevo JPanel Form de nombre PanelBasico donde hacemos el siguiente diseo: PanelBasico con BorderLayout. En el Norte colocamos una etiqueta para el ttulo. En el centro colocamos otra etiqueta con un texto y en el sur colocamos un botn para regresar. Utilice la propiedad background para cambiar de color de fondo y la propiedad opaque ponerlo en false. Observe la distribucin de los objetos y los nombres de variable utilizados.

Nuevamente, clic derecho en el paquete ejemplo12 y elegimos nuevo JPanel Form de nombre PanelIntermedio donde hacemos el siguiente diseo: PanelIntermedio con distribucin BorderLayout. En el norte colocamos una etiqueta para el ttulo. En el centro colocamos otra etiqueta con un texto y en el sur colocamos un botn para regresar. Utilice la propiedad background para poner un color de fondo de su preferencia. Utilice la propiedad opaque en false. Observe la distribucin de los objetos y los nombres de variable utilizados.

07/07/2010

www.parainformaticos.com

Pgina - 54 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])

Ambos paneles tienen distribucin BorderLayout, sin embargo puede usted poner la distribucin que necesite. Ahora vamos al cdigo fuente (source) de MiMenu para declarar los paneles y escribimos lo que est en negrita: public class MiMenu extends javax.swing.JFrame { PanelBasico pb; PanelIntermedio pi; public MiMenu() { initComponents(); pb = new PanelBasico(); pb.setVisible(false); pi = new PanelIntermedio(); pi.setVisible(false); } Ahora vamos a programar la accin del men item Bsico. Regresamos al diseo del frame. Clic derecho en men item Bsico, seleccionamos Events, Action, actionPerformed para programar su accin:

Y nos lleva al cdigo fuente donde escribimos lo que est en negrita: private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {

07/07/2010

www.parainformaticos.com

Pgina - 55 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])add(pb); // coloca el panel al centro del frame pb.setVisible(true); pi.setVisible(false); } Hacemos lo mismo para programar la accin del men item Intermedio y escribimos lo que est en negrita: private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) { add(pi); // coloca el panel al centro del frame pi.setVisible(true); pb.setVisible(false); } Observe que la llamada al mtodo add del frame para colocar los paneles se hace en la accin del men item. Como el frame tiene distribucin BorderLayout, lo colocar en su parte central. Finalmente, programamos la accin del men item Salir y escribimos lo que est en negrita: private void jMenuItem8ActionPerformed(java.awt.event.ActionEvent evt) { int rpta; rpta=JOptionPane.showConfirmDialog(this, "Esta seguro de salir?", // texto "Salir", // titulo 0 // opciones SI_NO ); if(rpta==0)// SI this.dispose(); } El mtodo showConfirmDialog de la clase JOptionPane permite acceder a ventanas de dilogo diversas como los puede ver en un ejemplo del captulo de miscelnea. Por tlimo vamos a crear un frame principal que va heredar al frame MiMenu que administra los mens. En la propiedad title le ponemos un ttulo y le colocamos distribucin BorderLayout. Luego vamos al cdigo fuente y escribimos lo que est en negrita: public class Principal extends MiMenu { static int w=500, h=400; public Principal() { initComponents(); setSize(w,h); setLocation((getToolkit().getScreenSize().width - w)/2, (getToolkit().getScreenSize().height - h)/2); } Ya puede ejecutar su aplicacin. Clase JTextField: Jerarqua de clases y herencia: java.lang.Object

07/07/2010

www.parainformaticos.com

Pgina - 56 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])java.awt.Component java.awt.Container javax.swing.JComponent javax.swing.text.JTextComponent javax.swing.JTextField Por herencia, la clase JTextField y sus clases descendientes (subclases directas) pueden utilizar los datos y/o mtodos de las superclases JTextComponent, JComponent de la librera swing y de las superclases Container, Component y Object de la librera awt. JTextField permite editar una linea de texto simple. Tiene capacidades adicionales que no se encuentra en la clase TextField. El alineamiento horizontal del JTextField puede ser establecido a la izquierda, al centro, a la derecha o justificado por ambos lados. Por defecto ser justificado por ambos lados. Clase JPasswordField: Jerarqua de clases y herencia: java.lang.Object java.awt.Component java.awt.Container javax.swing.JComponent javax.swing.text.JTextComponent javax.swing.JTextField javax.swing.JPasswordField Por herencia, la clase JPasswordField y sus clases descendientes (sublclases directas) pueden utilizar los datos y/o mtodos de las superclases JTextField, JTextComponent, JComponent de la librera swing y de las superclases Container, Component y Object de la librera awt.

07/07/2010

www.parainformaticos.com

Pgina - 57 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])La clase JPasswordField permite editar una linea de texto simple donde slamente se v un caractr cuando se va escribiendo pero no se v los caracteres originales que se escriben. Tipicamente sirve para la escritura de passwords. A continuacin un resumen de su contenido. Constructores JPasswordField() Construye un nuevo JPasswordField, con un documento por defecto, sin texto y con 0 columnas de ancho. Construye un nuevo JPasswordField inicializado con el texto dado.

JPasswordField(String text) Resumen de Mtodos

boolean echoCharIsSet() Retorna true si ste JPasswordField tiene un caractr de eco; de lo contrario retorna false. char getEchoChar() Retorna el caractr de eco. char[] getPassword() Retorna el texto contenido. void setEchoChar(char c) Establece el caractr de eco dndole como parmetro. Por defecto el carcter de eco es el asterisco *. Ejemplo 13: Disee una aplicacin para utilizar un JTextField y un JPasswordField para el ingreso de un usuario y su password. Al aceptar mostrar el usuario y password ingresados, como se aprecia a continuacin:

07/07/2010

www.parainformaticos.com

Pgina - 58 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])Nuevo proyecto de nombre Ejemplo13, nuevo paquete de nombre ejemplo13. Clic derecho en el paquete creado para elegir nuevo JPanel Form de nombre PanelPrincipal donde hacemos el siguiente diseo: PanelPrincipal con distribucin BorderLayout. En la parte sur colocamos una etiqueta de nombre lblEspia y en el centro colocamos otro panel de nombre panCentro con distribucin GridLayout de 3 filas, 2 columnas donde colocamos dos etiquetas (Usuario y Password), un JTextField, un JPasswordField y dos botones. Observe la distribucin de los objetos y los nombres de variable utilizados.

Doble clic en el textField del usuario para programar la accin de la tecla ENTER en dicho objeto y escribimos lo que est en negrita: private void txtUsuarioActionPerformed(java.awt.event.ActionEvent evt) { txtPassword.requestFocus(); } Regresamos al diseo y hacemos doble clic en el passwordField para programar la acin de la tecla ENTER en dicho objeto y escribimos lo que est en negrita: private void txtPasswordActionPerformed(java.awt.event.ActionEvent evt) { validaUsuario(); } public void validaUsuario(){ String usua = txtUsuario.getText(); char pass[] = txtPassword.getPassword(); lblEspia.setText("Hola " + usua + ", tu password es: "+ new String(pass)); lblEspia.setVisible(true); } Regresamos al diseo y hacemos doble clic en el botn Aceptar para programar su accin: private void btnAceptarActionPerformed(java.awt.event.ActionEvent evt) { validaUsuario(); } Regresamos al diseo y hacemos doble clic en el botn Limpiar para programar su accin: private void btbLimpiarActionPerformed(java.awt.event.ActionEvent evt) { txtUsuario.setText(""); txtPassword.setText(""); lblEspia.setText(""); txtUsuario.requestFocus(); }

07/07/2010

www.parainformaticos.com

Pgina - 59 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])Por ltimo hacemos clic derecho en el paquete para elegir nuevo JFrame Form de nombre Principal, escribimos un ttulo y le ponemos distribucin BorderLayout. Luego vamos al cdigo fuente para escribir lo que est en negrita: public class Principal extends javax.swing.JFrame { static int w=500, h=400; public Principal() { initComponents(); add(new PanelPrincipal()); setSize(w,h); setLocation((getToolkit().getScreenSize().width - w)/2, (getToolkit().getScreenSize().height - h)/2); } El caractr por defecto para el password es una bolita pero se puede cambiar ste carcter con el mtodo setEchoChar() . Por ejemplo: txtPassword.setEchoChar('&'); Tanto al hacer clic en el botn como al presionar enter en el password se realiza la misma accin. Por eso hemos escrito el mtodo validaUsuario() que es llamado desde la accin del ENTER en el passwordField as como desde la accin del botn Aceptar. El valor del password es retornado a un arreglo de caracteres, por eso hacemos la siguiente instruccin: char pass[] = txtPassword.getPassword(); Y para obtener el valor del password como cadena hacemos la siguiente instruccin: new String(pass); Ya puede ejecutar su aplicacin. Clase JProgressBar: Jerarqua de clases y herencia: java.lang.Object java.awt.Component java.awt.Container javax.swing.JComponent javax.swing.JProgressBar Por herencia, la clase JProgressBar y sus clases descendientes (subclases directas) pueden utilizar los datos y/o mtodos de las superclases JComponent de la librera swing y de las superclases Container, Component y Object de la librera awt.

07/07/2010

www.parainformaticos.com

Pgina - 60 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])

Un componente que, por defecto, muestra un valor entero dentro de un intervalo. Una barra de progreso tipicamente informa del progreso de algun trabajo mostrando el porcentaje de avance y posiblemente un texto alusivo a este porcentaje. Para indicar que una tarea de tamao desconocido esta ejecutndose, usted puede poner una barra de progreso en modo indeterminado. Mientras la barra esta en modo indeterminado, parpadea constantemente para mostrar que el trabajo esta ocurriendo. Tan pronto como se determine el tamao de la tarea y la cantidad progresada, usted puede actualizar el valor de la barra de progreso y cambiar al modo determinado anterior. A continuacin un resumen de su contenido.

Resumen de Datos protected protected protected protected int orientation Si la barra de progreso es horizontal o vertical.

boolean paintBorder Si se muestra el borde alrededor de la barra de progreso. boolean paintString Si se muestra textualmente sobre la barra de progreso. String progressString Una cadena opcional que puede ser mostrada en la barra de progreso.

Constructores JProgressBar() JProgressBar(int min, int max) Crea una barra de progreso horizontal que muestra un borde pero no un texto de progreso. Crea una barra de progreso horizontal con los valores mnimo y mximo indicados.

JProgressBar(int orient Crea una barra de progreso con la orientacin y valores mnimo y , int min, int max) mximo indicados. Resumen de Mtodos int getMaximum() Retorna el valor mximo de la barra. int getMinimum() Retorna el valor mnimo de la barra. BoundedRangeModel getModel() Retorna el modelo de datos que utiliza la barra. int getOrientation() Retorna el valor de la orientacin de la barra. double getPercentComplete() Retorna el porcentaje completado. String getString() Retorna el valor actual de texto de la barra. int getValue() Retorna el valor actual de la barra.

07/07/2010

www.parainformaticos.com

Pgina - 61 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])boolean isBorderPainted() Retorna true si los bordes de la barra estan pintados. boolean isIndeterminate() Retorna el valor de la propiedad indeterminate. boolean isStringPainted() Retorna el valor de la propiedad stringPainted. void setBorderPainted(boolean b) Establece el valor de la propiedad borderPainted. void setIndeterminate(boolean newValue) Establece el valor de la propiedad indeterminate. void setMaximum(int n) Establece el valor mximo de la barra. void setMinimum(int n) Establece el valor mnimo de la barra. void setModel(BoundedRangeModel newModel) Establece el modelo de dato utilizado por la barra. void setOrientation(int newOrientation) Establece la orientacin de la barra. El valor dado puede ser JProgressBar.VERTICAL o JProgressBar.HORIZONTAL. void setString(String s) Establece el valor de texto de la barra. void setValue(int n) Establece el valor actual de la barra. Clase JScrollBar: Jerarqua de clases y herencia: java.lang.Object java.awt.Component java.awt.Container javax.swing.JComponent javax.swing.JScrollBar Por herencia, la clase JScrollBar y sus clases descendientes (subclases directas) pueden utilizar los datos y/o mtodos de las superclases JComponent de la librera swing y de las superclases Container, Component y Object de la librera swing.

07/07/2010

www.parainformaticos.com

Pgina - 62 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])La implementacin de un scrollbar implica que el usuario coloca el puntero en l para determinar el contenido del area visible. El programa tipicamente ajusta el contenido visible porque el final del scrollbar representa el final del contenido visible o el 100%. El inicio del scrollbar es el comienzo del contenido visible o el 0%. La ubicacin del puntero con stos valores se trasladan en el porcentaje correspondiente del contenido visible. A continuacin un resumen de su contenido. Constructores JScrollBar() Crea un scrollbar vertical sin valores iniciales. JScrollBar(int orientation) Crea un scrollbar con la orientacin indicada como parmetro. Resumen de Mtodos int getBlockIncrement() Obtiene el valor de incremento de bloque. int getMaximum() Obtiene el valor mximo de la barra. int getMinimum() Obtiene el valor mnimo soportado por la barra (usualmente cero). int getOrientation() Obtiene la orientacin (horizontal o vertical). int getUnitIncrement() Obtiene la unidad de incremento. int getValue() Obtiene el valor actual. int getVisibleAmount() Retorna la extensin del scrollbar. void setBlockIncrement(int blockIncrement) Establece el valor del incremento de bloque. void setEnabled(boolean x) Establece como habilitado o deshabilitado segn el valor del parmetro. void setMaximum(int maximum) Establece el valor mximo. void setMinimum(int minimum) Establece el valor mnimo. Void setModel(BoundedRangeModel model) Establece el modelo de dato. void setOrientation(int orientation) Establece la orientacin de la barra. void setUnitIncrement(int unitIncrement) Establece el valor de la unidad de incremento. void setValue(int value) Establece el valor actual del scrollbar.

07/07/2010

www.parainformaticos.com

Pgina - 63 -

Anexo B Resumen de Clases SWINGPor: Julio Vsquez Paragulla ([email protected])void setValues(int newValue, int newExtent, int newMin, int newMax) Establece los cuatro valores de funcionamiento de la barra: void setVisibleAmount(int extent) Establece la extensin del modelo. Ejemplo 14: Disee una aplicacin donde se utilicen 3 scrollBar para representar el nivel de cada color basico: Rojo, Verde, Azul y segn el valor de ste nivel, reflejar en un progressBar el porcentaje alcanzado segn la barra de desplazamiento utilizada. En la parte central utilizar una etiqueta para reflejar la combinacin de colores seleccionada, como se muestra a continuacin: Cada barra de desplazamiento tiene un rango de valor minimo 0 y mximo 255 que representa el 100% de avance.

Nuevo proyecto de nombre Ejemplo14, nuevo paquete de nombre ejemplo14. Clic derecho en el paquete creado y elegimos nuevo JPanel Form de nombre PanelPrincipal donde hacemos el siguiente diseo:

PanelPrincipal con distribucin BorderLayout. En el norte colocamos otro panel (panNorte) con distribucin BorderLayout. En el oeste colocamos otro panel (panColores) con distribucin GridLayout de 3 filas, 1 columna donde se colocan las etiquetas de los colores. En el centro colocamos otro panel (panScroll) con GridLayout de 3 filas, 1 columna para los scrollBar. En el Este colocamos otro panel (panEtiquetas) con distribucin GridLayout de 3 filas, 1 columna para las etiquetas que tendrn los valores de cada scrollBar. En el centro del PanelPrincipal colocamos otro panel (panCentro) con distribucin