sábado, 14 de julio de 2012

4.3.2. Aplicaciones con Java Swing


Aplicaciones con Java Swing

En Java Swing se puede utilizar la clase JMenuBar para poder crear barras de menús y dar opciones a ejecutar, haciendo así mas llamativas nuestras aplicaciones. A continuación veamos la manera de usar el JMenuBar, viendo su constructor y algunos de sus métodos:
El método add es comúnmente utilizado para añadir elementos del objeto JMenu, que sería cada menú a aparecer. El JMenu tiene los siguientes constructores y algunos de los métodos utilizados:
El objeto de la clase JMenu nos sirve para crear menús en la barra de menús del objeto  JMenuBar, primero debemos crear cada objeto por separado, añadirle a cada objeto de la clase JMenu sus opciones y después estos objetos de la clase JMenu añadirlos al objeto JMenuBar, también tenemos otra clase de Java Swing que hereda de la clase JEditorPane que nos permite tener un texto el cual puede tener atributos que son representados gráficamente, veamos sus constructores y algunos de sus métodos:
A continuación se muestra una aplicación que a través del uso de un menú nos permite cambiar el estilo del texto utilizado en un objeto de la clase JTextPane, en esta aplicación utilizamos un menú para seleccionar el estilo de letra a utilizar:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.text.*;
public class AplicacionSwing5 extends JPanel implements ActionListener {
 private Style estiloMorado,estiloGris,estiloCeleste,estiloRojo,estiloAzul;
 private JTextPane texto;
   
 public AplicacionSwing5() {
   setLayout( new BorderLayout() );
   JMenuBar menu = new JMenuBar();
   JMenu estilo = new JMenu( "Estilo" );
   menu.add( estilo );
   
   JMenuItem mi = new JMenuItem( "Morado" );
   estilo.add( mi );
   mi.addActionListener(this);    
   mi = new JMenuItem( "Gris" );
   estilo.add( mi );
   mi.addActionListener(this);    
   mi = new JMenuItem( "Celeste" );
   estilo.add( mi );
   mi.addActionListener(this);    
   mi = new JMenuItem( "Rojo" );
   estilo.add( mi );
   mi.addActionListener(this);    
mi = new JMenuItem( "Azul" );
   estilo.add( mi );
   mi.addActionListener( this );
   add( menu,BorderLayout.NORTH );
   
   StyleContext sc = new StyleContext();    
   estiloMorado = sc.addStyle( null,null );
   StyleConstants.setForeground( estiloMorado,Color.magenta );
   estiloGris = sc.addStyle( null,null );
   StyleConstants.setForeground( estiloGris,Color.gray );
   StyleConstants.setFontSize( estiloGris,24 );
   estiloCeleste = sc.addStyle( null,null );
   StyleConstants.setForeground( estiloCeleste,Color.cyan );
   estiloRojo = sc.addStyle( null,null );
   StyleConstants.setForeground( estiloRojo,Color.red );
   estiloAzul = sc.addStyle( null,null );
   StyleConstants.setForeground( estiloAzul,Color.blue );
   
   DefaultStyledDocument doc = new DefaultStyledDocument(sc);

   JTextPane texto = new JTextPane(doc);
   add( texto,BorderLayout.CENTER );      
 }
     
 public void actionPerformed( ActionEvent e ) {
   Style estilo = null;
   String color = (String) e.getActionCommand();
   
   if( color.equals( "Morado" ) ) {
     estilo = estiloMorado;
   } else if( color.equals( "Celeste" ) ) {
     estilo = estiloCeleste;
   } else if( color.equals( "Gris" ) ) {
     estilo = estiloGris;
   } else if( color.equals( "Rojo" ) ) {
     estilo = estiloRojo;
   } else if( color.equals( "Azul" ) ) {
     estilo = estiloAzul;
   }
   texto.setCharacterAttributes( estilo,false );
 }
   
 public static void main( String argv[] ) {
   JFrame app = new JFrame( "Tutorial de Java, Swing" );
   
   app.addWindowListener( new WindowAdapter() {
     public void windowClosing( WindowEvent evt ){
  System.exit( 0 );
     }
   } );
   app.getContentPane().add( new AplicacionSwing5(),BorderLayout.CENTER );
   app.setSize( 300,180 );
   
   app.setVisible( true );
 }
}
La ejecución de la aplicación sería:
Y una vez utilizadas las opciones del menú:
Analicemos la aplicación:
Primero creamos la barra de menú y la primera de las opciones es el estilo y después el Morado y las demás, añadiéndole a las correspondientes la facilidad de ser escuchadas, como el Morado y las que siguen:
   JMenuBar menu = new JMenuBar();
   JMenu estilo = new JMenu( "Estilo" );
   menu.add( estilo );
   
   JMenuItem mi = new JMenuItem( "Morado" );
   estilo.add( mi );
   mi.addActionListener(this);    
Antes de crear el objeto JTextPane, debemos definir los diferentes estilos que este objeto va a tener y eso lo hacemos con la ayuda de la clase DefaultStyledDocument  la cual debe de tener todo el contexto de los estilos a utilizar con la ayuda de la clase  StyleContext, como se ve:
   StyleContext sc = new StyleContext();    
   estiloMorado = sc.addStyle( null,null );
   StyleConstants.setForeground( estiloMorado,Color.magenta );
   estiloGris = sc.addStyle( null,null );
   …
   …
   
   DefaultStyledDocument doc = new DefaultStyledDocument(sc);

   JTextPane texto = new JTextPane(doc);
JTable
JTable es la clase en principio, se creó para constituir un interfaz ligado a bases de datos a través del Java Database Connectivity (JDBC), y así evitar la complejidad inherente al manejo de los datos, proporcionando mucha flexibilidad al programador.
Hay suficientes características como para montar desde una hoja de cálculo básica hasta información para escribir un libro completo.
La JTable nos permite manejar información como si fuera una hoja electrónica de cálculo.
Los constructores de la JTable son:
Revisa los métodos de la clase, hay un número considerable de métodos que te permitirán manejar de una manera muy flexible la tabla:
Una manera sencilla de usar la JTable es tomando ayuda de la TableModel, que nos ayuda a modelar la tabla, y por otro lado la clase JScrollPane permite añadirle un deslizador a ambas partes de la tabla tanto horizontal como vertical, un ejemplo sencillo de cómo se manejaría esto sería crear el objeto dataModel como se ve a continuación (se crea definiendo una clase Interna dentro de la clase misma “AbstractTableModel”).
 TableModel dataModel = new AbstractTableModel() {
         public int getColumnCount() {
 return 10;
   }
         public int getRowCount() {
 return 10;
   }
         public Object getValueAt(int row, int col) {
 return new Integer(row*col);
  }
     };
     JTable table = new JTable(dataModel);
     JScrollPane scrollpane = new JScrollPane(table);
Un ejemplo de aplicación gráfica que genera una JTable es el siguiente:
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
class AplicacionSwing6 extends JPanel {
 private JTable tabla;
 private JScrollPane panelScroll;
 private String tituloColumna[];
 private String datoColumna[][];

 public AplicacionSwing6() {
   setLayout( new BorderLayout() );
   // se crean las columnas con su titulo por separado
   tituloColumna = new String[8];
   
   for( int i=0; i < 8; i++ ) {
     tituloColumna[i] = "Col: "+i;
   }
   datoColumna = new String[100][8];
   // se cargan los valores en cada celda para lo que queremos que aparezca
   for( int i=0; i < 100; i++ ) {
     for( int j=0; j < 8; j++ ) {
 datoColumna[i][j] = "" + j + "," + i;
     }
   }
   // se crea una instancia del componente Swing
   tabla = new JTable( datoColumna,tituloColumna );
   // se cambia la presentación a la tabla
   tabla.setShowHorizontalLines( false );
   tabla.setRowSelectionAllowed( true );
   tabla.setColumnSelectionAllowed( true );
   // se cambia el color de la zona seleccionada (rojo/blanco)
   tabla.setSelectionForeground( Color.white );
   tabla.setSelectionBackground( Color.red );
   // la tabla se añade a un objeto de la clase JScrollPane
   // para que tenga la facilidad de barras deslizadoras
   panelScroll = new JScrollPane( tabla );
   add( panelScroll, BorderLayout.CENTER );
 }




 public static void main( String args[] ) {
   JFrame ventana = new JFrame( "Utilizando JTable" );
   
   ventana.addWindowListener( new WindowAdapter() {
     public void windowClosing( WindowEvent evt ){
System.exit( 0 );
     }
   } );
   ventana.getContentPane().add( new AplicacionSwing6(),BorderLayout.CENTER );
   ventana.setSize( 300,180 );
   
   ventana.setVisible( true );
 }
}
La aplicación se vería de la siguiente manera:
Para utilizar o hacer algo con los datos, tendríamos que revisar si el dato o la columna o el renglón fueron seleccionados o editados, utilizando los métodos de la clase.

No hay comentarios:

Publicar un comentario