Académique Documents
Professionnel Documents
Culture Documents
07/07/2010
www.parainformaticos.com
Pgina - 1 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
07/07/2010
www.parainformaticos.com
Pgina - 10 -
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 -
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 -
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 -
} 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.
07/07/2010
www.parainformaticos.com
Pgina - 14 -
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 -
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 -
07/07/2010
www.parainformaticos.com
Pgina - 17 -
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 -
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 -
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 -
// 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.
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 -
07/07/2010
www.parainformaticos.com
Pgina - 22 -
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 -
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 -
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 -
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 -
Resumen de Datos static int EXIT_ON_CLOSE La salida por defecto al cerrar la ventana.
07/07/2010
www.parainformaticos.com
Pgina - 27 -
07/07/2010
www.parainformaticos.com
Pgina - 28 -
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:
07/07/2010
www.parainformaticos.com
Pgina - 29 -
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:
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 -
07/07/2010
www.parainformaticos.com
Pgina - 31 -
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 -
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 -
07/07/2010
www.parainformaticos.com
Pgina - 34 -
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 -
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 -
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 -
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 -
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="<html>Para crear una etiqueta " + "Swing se tiene 4 alternativas:" + "<UL>" + "<LI>Slo Texto" + "<LI>Slo Imagen" + "<LI>Texto con Imagen, y" + "<LI>Multilnea, como sta" + "</UL>"+ "<html><br>"+ "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 -
07/07/2010
www.parainformaticos.com
Pgina - 40 -
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 -
07/07/2010
www.parainformaticos.com
Pgina - 42 -
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 -
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 -
07/07/2010
www.parainformaticos.com
Pgina - 45 -
07/07/2010
www.parainformaticos.com
Pgina - 46 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
07/07/2010
www.parainformaticos.com
Pgina - 56 -
07/07/2010
www.parainformaticos.com
Pgina - 57 -
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 -
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 -
07/07/2010
www.parainformaticos.com
Pgina - 60 -
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 -
07/07/2010
www.parainformaticos.com
Pgina - 62 -
07/07/2010
www.parainformaticos.com
Pgina - 63 -
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 BorderLayout. En el centro colocamos una etiqueta. En el sur del PanelPrincipal colocamos otro panel (panSur) con distribucin GridLayout de 1 fila, 1 columna donde se coloca un progressBar donde aparecer el porcentaje
07/07/2010
www.parainformaticos.com
Pgina - 64 -
El objeto progressBar trabaja con otro objeto modelo, por ello vamos al cdigo fuente y escribimos lo que est en negrita: public class PanelPrincipal extends javax.swing.JPanel { DefaultBoundedRangeModel modProgreso; public PanelPrincipal() { initComponents(); modProgreso = new DefaultBoundedRangeModel(0,1,0,255); pgbProgreso.setModel(modProgreso); } Los valores iniciales definidos para el modelo son 0 como valor actual, 1 como valor extendido, 0 como valor mnimo y 255 como valor mximo que corresponder al 100% de avance. Ahora vamos a programar la accin de cada scrollBar. Clic derecho en el objeto, Events, Adjustment, AdjustementValueChanged: private void scbRojoAdjustmentValueChanged(java.awt.event.AdjustmentEvent evt) { // obtiene la intensidad elegida de cada color int rojo = scbRojo.getValue(); int verde = scbVerde.getValue(); int azul = scbAzul.getValue(); // actualiza el valor actual de cada barra lblR.setText(""+rojo);
07/07/2010
www.parainformaticos.com
Pgina - 65 -
07/07/2010
www.parainformaticos.com
Pgina - 66 -
07/07/2010
www.parainformaticos.com
Pgina - 67 -
protected protected
protected sliderModel BoundedRangeModel El modelo que maneja los valores numricos del valor maximo, valor minimo y valor actual. Constructores JSlider() JSlider(int orientation) JSlider(int min, int max) JSlider(int min, int max, int value) Resumen de Mtodos int getMajorTickSpacing() Retorna el valor del mayor espaciamiento. int getMaximum() Retorna el valor mximo soportado por el slider. int getMinimum() Retorna el valor mnimo soportado por el slider. int getMinorTickSpacing() Retorna el valor del menor espaciamiento. int getOrientation() Retorna la orientacin del slider. boolean getPaintLabels() Indica si las etiquetas estn pintados o no. Crea un slider horizontal con el rango de 0 a 100 y un valor inicial de 50. Crea un slider con la orientacin indicada y con el rango de 0 a 100 y valor inicial de 50. Crea un slider horizontal usando los valores minimo y maximo indicados. El valor actual sera el promedio del maximo y mnimo. Crea un slider horizontal usando los valores minimo, maximo y valor actual indicados.
07/07/2010
www.parainformaticos.com
Pgina - 68 -
07/07/2010
www.parainformaticos.com
Pgina - 69 -
Nuevo proyecto de nombre Ejemplo15, nuevo paquete de nombre ejemplo15. Clic derecho en el paquete creado, seleccionamos 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 la parte este colocamos otro panel (jPanel1) con distribucin GridLayout de 3 filas, 1 columna para los valores de las reglas y en la parte centro colocamos otro panel (jPanel2) con distribucin GridLayout de 3 filas, 1 columna para los sliders con borde con ttulo para identificar a qu color representa cada slider. En el centro del PanelPrincipal colocamos una etiqueta donde se reflejar el color combinado que correspondiente a los valores establecidos en las reglas. Observe la distribucin de los objetos y los nombres de variable utilizados.
07/07/2010
www.parainformaticos.com
Pgina - 70 -
Recuerde que para colocar objetos en un panel lo puede hacer arrastrando el objeto hacia el panel o haciendo clic derecho en el nombre de variable del panel elegimos Add from palette,luego el objeto swing que se desee. Esta segunda forma es muy prctica cuando en el diseo se oculta algn panel por efecto de la aplicacin de alguna distribucin.
En las propiedades de los sliders establecer los valores mnimo a 0, mximo a 255, valor actual a 0, paintLabels en true, majorTickSpacing en 25, minorTickSpacing en 5 para que el slider tenga sus marcadores de regla. La propiedad foreground de cada slider elegir el color Rojo, Verde, Azul respectivamente. En la propiedad Opaque de la etiqueta que refleja el color combinado debe estar en true.
Ahora vamos a programar la accin de cada slider. Clic derecho en el objeto, Events, Change, StateChange. private void sldRojoStateChanged(javax.swing.event.ChangeEvent evt) { // obtiene la intensidad elegida de cada color int rojo = sldRojo.getValue(); int verde = sldVerde.getValue(); int azul = sldAzul.getValue(); // actualiza valor actual del slider lblR.setText(""+rojo); // establece color de fondo personalizado a la caja de texto lblColorCombinado.setBackground(new Color(rojo,verde,azul)); }
07/07/2010
www.parainformaticos.com
Pgina - 71 -
07/07/2010
www.parainformaticos.com
Pgina - 72 -
07/07/2010
www.parainformaticos.com
Pgina - 73 -
07/07/2010
www.parainformaticos.com
Pgina - 74 -
07/07/2010
www.parainformaticos.com
Pgina - 75 -
07/07/2010
www.parainformaticos.com
Pgina - 76 -
En sta ltima ventana aparece marcado por defecto la opcin NO y al aceptar debe mostrarse la ventana inicial. Sin embargo, al marcar la opcin SI y al aceptar debe cerrarse la aplicacin.
07/07/2010
www.parainformaticos.com
Pgina - 77 -
Damos clic en el botn Refactor y listo. Nuevamente, copiamos el PanelPrincipal del ejempo14 y lo pegamos en el paquete ejemplo16 con el nombre PanelPrincipal2. Igualmente, copiamos el PanelPrincipal del ejemplo15 y lo pegamos en el paquete ejemplo16 con el nombre PanelPrincipal3. Antes de hacer clic en el botn Refactor podemos cambiarle el nombre a la clase que estamos copiando. Ahora creamos un nuevo panel: Clic derecho en el paquete ejemplo16, elegimos nuevo JPanel Form de nombre PanelPrincipal a quien le damos distribucin BorderLayout. En el centro del panel principal colocamos un objeto JTabbedPane de nombre tabOpciones y el diseo queda as:
07/07/2010
www.parainformaticos.com
Pgina - 78 -
Ahora vamos a crear el panel de salida: Clic derecho en el paquete ejemplo16. elegimos nuevo JPanel Form de nombre PanelSalir a quien le damos distribucin BorderLayout. En su parte sur colocamos otro panel con borde con ttulo y con distribucin GridLayout de 1 fila, 3 columnas y hacemos el siguiente diseo:
07/07/2010
www.parainformaticos.com
Pgina - 79 -
Ahora s, vemos cmo queda distribudo nuestro proyecto Ejemplo16 desde NetBeans: Dentro de la carpeta Source Packages, tenemos un paquete ejemplo16 con 5 paneles y 1 frame Principal y otro paquete images con las imgenes que sern utilizados en el objeto JTabbedPane.
07/07/2010
www.parainformaticos.com
Pgina - 80 -
Ahora vamos al cdigo fuente (source) del PanelPrincipal de ste paquete ejemplo16 y escribimos lo que est en negrita: public class PanelPrincipal extends javax.swing.JPanel { PanelPrincipal1 panPassWord; PanelPrincipal2 panScrollBar; PanelPrincipal3 panSlider; PanelSalir panSalir; Principal p; public PanelPrincipal(Principal p) { initComponents(); // recibe al frame principal this.p=p; // crea los paneles que se van a utilizar en el JTabbedPane panPassWord = new PanelPrincipal1(); panScrollBar= new PanelPrincipal2(); panSlider = new PanelPrincipal3(); panSalir = new PanelSalir(p, this); // agrega ttulos y asocia a los paneles de cada ficha tabOpciones.addTab("JPassword",panPassWord); tabOpciones.addTab("JScrollBar y JProgressBar",panScrollBar); tabOpciones.addTab("JSlider",panSlider); tabOpciones.addTab("Salir", panSalir); // establece texto que aparece al pasar el Mouse tabOpciones.setToolTipTextAt(0,"Ingresa Usuario tabOpciones.setToolTipTextAt(1,"Combina colores tabOpciones.setToolTipTextAt(2,"Combina colores tabOpciones.setToolTipTextAt(3,"Salir"); en cada ficha y Password"); y JscrollBar"); y JSlider");
// establece color de fondo para cada ficha tabOpciones.setBackgroundAt(0,new Color(149,199,199)); tabOpciones.setBackgroundAt(1,new Color(199,199,149)); tabOpciones.setBackgroundAt(2,new Color(199,149,199)); tabOpciones.setBackgroundAt(3,new Color(149,149,199)); // establece un icono para cada ficha tabOpciones.setIconAt(0,new ImageIcon( getClass().getResource("/images/bolita.gif"))); tabOpciones.setIconAt(1,new ImageIcon( getClass().getResource("/images/estrei.gif"))); tabOpciones.setIconAt(2,new ImageIcon( getClass().getResource("/images/bolita.gif"))); tabOpciones.setIconAt(3,new ImageIcon(
07/07/2010
www.parainformaticos.com
Pgina - 81 -
07/07/2010
www.parainformaticos.com
Pgina - 82 -
javax.swing.table.AbstractTableModel javax.swing.table.DefaultTableModel Por herencia, la clase DefaultTableModel puede utilizar los datos y/o mtodos de la superclase AbstractTableModel de la lilbrera swing.table y de la superclase Object de la librera java.lang. Un DefaultTableModel es un objeto TableModel que utiliza un vector de vectores para guardar el valor de los objetos en las celdas de una tabla. Se le utiliza en la implementacin de objetos JTable. A continuacin un resumen de su contenido.
Constructores DefaultTableModel() Construye por defecto un DefaultTableModel el cual es una tabla vaca de cero filas y cero columnas. DefaultTableModel(int rowCount, int columnCount) Construye un DefaultTableModel con una cantidad de filas y columnas dadas como parmetros pero con celdas vacas. DefaultTableModel(Object[][] data, Object[] columnNames) Construye un DefaultTableModel e inicializa la tabla con la data y nombres de columna dados como parmetro. DefaultTableModel(Object[] columnNames, int rowCount) Construye un DefaultTableModel con algunas columnas dadas en el parmetro columnNames y con una cantidad de filas cuyos valores de celda son nulos. DefaultTableModel(Vector columnNames, int rowCount) Construye un DefaultTableModel con algunas columnas dadas en el parmetro columnNames y con una cantidad de filas cuyos valores de celda son nulos. DefaultTableModel(Vector data, Vector columnNames) Construye un DefaultTableModel e inicializa la tabla con la data y nombres de columna dados como parmetros. Resumen de Mtodos void addColumn(Object columnName) Agrega una columna al modelo. void addColumn(Object columnName,Object[] columnData) Agrega una columna al modelo. void addColumn(Object columnName, Vector columnData) Agrega una columna al modelo. void addRow(Object[] rowData) Agrega una fila al final del modelo. void addRow(Vector rowData)
07/07/2010
www.parainformaticos.com
Pgina - 83 -
07/07/2010
www.parainformaticos.com
Pgina - 84 -
07/07/2010
www.parainformaticos.com
Pgina - 85 -
JTable(TableModel dm)
JTable(TableModel dm, TableColumnModel cm, ListSelectionModel sm) JTable(Vector rowData, Vector columnNames) Resumen de Mtodos
void addColumn(TableColumn aColumn) Agrega una columna al final del arreglo de columnas. TableColumn getColumn(Object identifier) Retorna el objeto TableColumn que es igual al identifier, cuando sea comparada usando el mtodo equals(). int getColumnCount() Retorna el nmero de columnas que hay en el modelo de columnas. TableColumnModel getColumnModel() Retorna el TableColumnModel que contiene todas las columnas de datos. String getColumnName(int column) Retorna el nombre de la columna correspondiente a la posicin indicada como parmetro. int getEditingColumn() Retorna el index de la columna que contiene a la celda actualmente editada. int getEditingRow() Retorna el index de la fila que contiene a la celda actualmente editada.
07/07/2010
www.parainformaticos.com
Pgina - 86 -
07/07/2010
www.parainformaticos.com
Pgina - 87 -
07/07/2010
www.parainformaticos.com
Pgina - 88 -
Ejemplo 17: Disee una aplicacin utilizando un JTable para ingresar, eliminar, editar e inicializar los siguientes datos: nombres, apellidos, edad, sexo. Como se muestra a continuacin:
07/07/2010
www.parainformaticos.com
Pgina - 89 -
Nuevo proyecto de nombre Ejemplo17, nuevo paquete de nombre ejemplo17. Clic derecho en el paquete creado, elegimos nuevo JPanel Form de nombre PanelPrincipal donde hacemos el siguiente diseo. PanelPrincipal con distribucin BorderLayout. En el norte colocamos otro panel (panNorte) a quien la damos distribucin BorderLayout. En el centro del panel panNorte colocamos otro panel (panDatos) con distribucin GridLayout de 2 filas, 4 columnas para los objetos de nombre, edad, apellido, sexo. En el sur del panel panNorte colocamos otro panel ( panBotones) con distribucin GridLayout de 1 fila, 4 columnas para colocar los botones. As queda la distribucin del panel panNorte:
07/07/2010
www.parainformaticos.com
Pgina - 90 -
Ahora vamos a crear una nueva clase propia de nombre Datos. Clic derecho en el paquete ejemplo17, elegimos nueva Java class:
07/07/2010
www.parainformaticos.com
Pgina - 91 -
Nos lleva a otra ventana donde escribimos el nombre de nuestra clase: Datos y hacemos clic en el botn Finish: Escribimos el contenido de nuestra clase: public class Datos { // atributos private String nombre; private String apellido; private int edad; private String sexo; // constructor public Datos(String nombre, String apellido, int edad, String sexo){ this.nombre =nombre; this.apellido=apellido; this.edad=edad; this.sexo=sexo; } Para el cdigo de los mtodos get-set, NetBens lo genera de la siguiente manera: Clic derecho en la clase Datos, elegimos Refactor, encapsulate fields:
07/07/2010
www.parainformaticos.com
Pgina - 92 -
Marcamos los checks de los atributos que queremos crear su get y/o su set:
07/07/2010
www.parainformaticos.com
Pgina - 93 -
Finalmente hacemos clic en el botn Refactor y listo. Netbeans ha generado el cdigo de todos los mtodo get y set que hayamos seleccionado, as: public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } public String getApellido() { return apellido; } public void setApellido(String apellido) { this.apellido = apellido; } public int getEdad() { return edad; } public void setEdad(int edad) { this.edad = edad; } public String getSexo() {
07/07/2010
www.parainformaticos.com
Pgina - 94 -
07/07/2010
www.parainformaticos.com
Pgina - 95 -
07/07/2010
www.parainformaticos.com
Pgina - 96 -
07/07/2010
www.parainformaticos.com
Pgina - 97 -
add(new PanelPrincipal()); setSize(w,h); setLocation((getToolkit().getScreenSize().width - w)/2, (getToolkit().getScreenSize().height - h)/2); } La tabla contiene los datos de un modelo de datos el cual debemos implementar con la clase DefaultTableModel; sin embargo hay algunas acciones que lo podemos hacer con mtodos del modelo como removeRow() pero hay otras acciones que lo debemos hacer con mtodos de la tabla como getRowCount(). Ya puede ejecutar su aplicacin. Clase JTree: Jerarqua de clases y herencia: java.lang.Object java.awt.Component java.awt.Container javax.swing.JComponent javax.swing.JTree Por herencia, la clase JTree puede 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 nodo especfico en un arbol puede ser identificado de las siguientes formas: por un TreePath (un objeto que encapsula un nodo y todos sus ancestros), o por su fila visible, donde cada fila en el area visible muestra un nodo. Un nodo expandido es un nodo que muestra sus hijos. Un nodo colapsado es un nodo que esconde a sus hijos. Un nodo hidden es un nodo que est debajo de un ancestro colapsado. Todas las variables de nodo capaces de ser visibles son expandidas, pero puede o no puede ser mostrado. Un nodo displayed estar visible donde pueda ser visto. Si est interesado en conocer acerca de los cambios en el arbol, implementar la interface TreeSelectionListener y agregar la instancia usando el mtodo addTreeSelectionListener. El mtodo valueChanged() sera invocado cuando cambia algo, esto es, si el usuario clickea dos veces en el mismo nodo, el mtodo valueChanged() solamente ser invocado una vez. Para usar JTree que muestren sus nodos (por ejemplo, nodos conteniendo tanto un cono grfico como un texto), necesita de la subclase TreeCellRenderer y el uso del mtodo setCellRenderer(javax.swing.tree.TreeCellRenderer). Para editar los nodos, necesita de la subclase TreeCellEditor y el mtodo setCellEditor(javax.swing.tree.TreeCellEditor).
07/07/2010
www.parainformaticos.com
Pgina - 98 -
En la parte inferior del arbol debe aparecer el tem elegido del arbol. Nuevo proyecto de nombre Ejemplo18, nuevo paquete de nombre ejemplo18. Clic derecho en el paquete creado, elegimos JPanel Form de nombre PanelPrincipal donde hacemos el siguiente diseo: PanelPrincipal con distribucin BorderLayout. En el norte colocamos un botn en el sur colocamos una etiqueta y en el centro colocamos un JScrollPane. El objeto JTree lo vamos a colocar en el cdigo porque necesita de un modelo. Observe la distribucin de los objetos y los nombres de variable utilizados.
07/07/2010
www.parainformaticos.com
Pgina - 99 -
Ahora vamos al cdigo del PanelPrincipal para escribir lo que est en negrita: public class PanelPrincipal extends javax.swing.JPanel implements TreeSelectionListener{ // inicializa contenido del arbol Object[] ramas={ "Super JAVA SE for windows", "00.Introduccion", "01.Lenguaje de programacion JAVA", "02.Resumen de clases AWT", "03.Resumen de clases SWING", "04.Procesos secuenciales", new Object[] { "05.Procesos condicionales", "Condicional simple: if", "Condicional doble: if else", "Condicional mltiple: if else if", "Seleccin mltiple: switch" }, new Object[] { "06.Procesos repetitivos", "mientras: while", "hacer mientras: do while", "para: for" }, "07.Mtodos propios", "08.Arreglos y Matrices", "09.Arreglos de objetos", "10.Estructuras dinmicas", "11.Miscelanea", "12.Base de datos",
07/07/2010
www.parainformaticos.com
Pgina - 100 -
07/07/2010
www.parainformaticos.com
Pgina - 101 -
El uso de los paneles permiten distribuir de una mejor manera los objetos que queremos presentar en nuestro diseo. Definitivamente el uso de las clases Swing permiten una mejor apariencia de nuestros paneles, frames, applets para el usuario. Sin embargo, podemos comprobar que an es ineludible el uso de la librera awt para acceder a determinadas clases complementarias. Se recomienda revisar la jerarqua de clases para una clase en particular y as tener una mejor vista panormica de los alcances de los mtodos de sus clases superiores.
07/07/2010
www.parainformaticos.com
Pgina - 102 -