jueves, 3 de noviembre de 2011

Uso de Exception II

// Demostración de la limpieza de la pila.
public class UsoExcepciones {

   public static void main( String args[] )
   {
      // llamar a lanzaExcepcion para demostrar la limpieza de la pila
      try {
         lanzaExcepcion();
      }

      // atrapar excepción lanzada en lanzaExcepcion
      catch ( Exception excepcion ) {
         System.err.println( "La excepcion se manejo en main" );
      }
   }

   // lanzaExcepcion lanza la excepción que no es atrapada en este método
   public static void lanzaExcepcion() throws Exception
   {
      // lanzar una excepción y atraparla en main
      try {
         System.out.println( "El metodo lanzaExcepcion" );
         throw new Exception();      // generar excepción
      }

      // catch es del tipo incorrecto, por lo que la excepción no es atrapada
      catch( RuntimeException excepcionTiempoEjecucion ) {
         System.err.println(
            "La excepcion se manejo en el metodo lanzaExcepcion" );
      }

      // la cláusula finally siempre se ejecuta
      finally {
         System.err.println( "Finally siempre se ejecuta" );
      }

   } // fin del método lanzaExcepcion

}

Uso de Exceptions I

// Demostración del mecanismo try-catch-finally para manejar excepciones.
public class UsoExcepciones {

   public static void main( String args[] )
   {
      try {
         lanzarExcepcion(); // llamar al método lanzarExcepcion
      }

      // atrapar excepciones lanzadas por el método lanzarExcepcion
      catch ( Exception excepcion ) {
         System.err.println( "La excepcion se manejo en main" );
      }

      noLanzaExcepcion();
   }

   // demostrar try/catch/finally
   public static void lanzarExcepcion() throws Exception
   {
      // lanzar una excepción y atraparla inmediatamente
      try {
         System.out.println( "El metodo lanzarExcepcion" );
         throw new Exception();  // generar excepción
      }

      // atrapar la excepción lanzada en el bloque try
      catch ( Exception excepcion ) {
         System.err.println(
            "La excepcion se manejo en el metodo lanzarExcepcion" );
         throw excepcion;  // volver a lanzar para procesarla posteriormente

         // cualquier código aquí no llegaría a ejecutarse
      }

      // este bloque se ejecuta, sin importar lo que ocurra en try/catch
      finally {
         System.err.println( "Finalmente se ejecuto en lanzarExcepcion" );
      }

      // cualquier código aquí no llegaría a ejecutarse

   } // fin del método lanzarExcepcion

   // demostrar finally cuando no ocurre excepción
   public static void noLanzaExcepcion()
   {
      // el bloque try no lanza una excepción
      try {
         System.out.println( "El metodo noLanzaExcepcion" );
      }

      // catch no se ejecuta, porque no se lanzó una excepción
      catch( Exception excepcion ) {
         System.err.println( excepcion );
      }

      // la cláusula this se ejecuta, sin importar lo que ocurra en try/catch
      finally {
         System.err.println(
            "Finalmente se ejecuto en noLanzaExcepcion" );
      }

      System.out.println( "Fin del metodo noLanzaExcepcion" );

   } // fin del método noLanzaExcepcion

} // fin de la clase UsoExcepciones

Juego Marcianitos

Aquí tienen un juego bastante primitivo que me encontré el la web, también les puede servir si revisan el código.



Demostracion Apariencia visual basica



// Cambio de la apariencia visual.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class DemoAparienciaVisual extends JFrame {
   private final String cadenas[] = { "Metal", "Motif", "Windows" };
   private UIManager.LookAndFeelInfo apariencias[];
   private JRadioButton opcion[];
   private ButtonGroup grupo;
   private JButton boton;
   private JLabel etiqueta;
   private JComboBox cuadroCombinado;
String s1="";
   // configurar la GUI
   public DemoAparienciaVisual()
   {
      super( "Demo de apariencia visual" );

      Container contenedor = getContentPane();

      // establecer panel para región NORTH de esquema BorderLayout
      JPanel panelNorte = new JPanel();
      panelNorte.setLayout( new GridLayout( 3, 1, 0, 5 ) );

      // establecer etiqueta para panel NORTH
      etiqueta = new JLabel( "Ésta es la apariencia visual Metal seleccionada",
         SwingConstants.CENTER );
      panelNorte.add( etiqueta );

      // establecer botón para panel NORTH
      boton = new JButton( "JButton" );
      panelNorte.add( boton );

      // establecer cuadro combinado para panel NORTH
      cuadroCombinado = new JComboBox( cadenas );
      panelNorte.add( cuadroCombinado );
    
      // crear arreglo para botones de opción
      opcion = new JRadioButton[ cadenas.length ];

      // establecer panel para región SOUTH de esquema BorderLayout
      JPanel panelSur = new JPanel();
      panelSur.setLayout( new GridLayout( 1, opcion.length ) );

      // establecer botones de opción para panel SOUTH
      grupo = new ButtonGroup();
      ManejadorEventos manejador = new ManejadorEventos();

      for ( int cuenta = 0; cuenta < opcion.length; cuenta++ ) {
         opcion[ cuenta ] = new JRadioButton( cadenas[ cuenta ] );
         opcion[ cuenta ].addItemListener( manejador );
         grupo.add( opcion[ cuenta ] );
         panelSur.add( opcion[ cuenta ] );
      }

      // adjuntar paneles NORTH y SOUTH al panel de contenido
      contenedor.add( panelNorte, BorderLayout.NORTH );
      contenedor.add( panelSur, BorderLayout.SOUTH );

      // obtener información de la apariencia visual instalada
      apariencias = UIManager.getInstalledLookAndFeels();

      setSize( 300, 200 );
      setVisible( true );

      opcion[ 0 ].setSelected( true );

   } // fin del constructor de DemoAparienciaVisual

   // usar UIManager para cambiar la apariencia visual de la GUI
   private void cambiarLaAparienciaVisual( int valor )
   {
      // cambiar la apariencia visual
      try {
         UIManager.setLookAndFeel( apariencias[ valor ].getClassName() );
         SwingUtilities.updateComponentTreeUI( this );
         s1= apariencias[ valor ].getClassName();
      }

      // procesar problemas al cambiar la apariencia visual
      catch ( Exception excepcion ) {
         excepcion.printStackTrace();
      }
   }

   public static void main( String args[] )
   {
      DemoAparienciaVisual aplicacion = new DemoAparienciaVisual();
      aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
   }

   // clase interna privada para manejar eventos de botones de opción
   private class ManejadorEventos implements ItemListener {

      // procesar selección de apariencia visual del usuario
      public void itemStateChanged( ItemEvent evento )
      {
         for ( int cuenta = 0; cuenta < opcion.length; cuenta++ )

            if ( opcion[ cuenta ].isSelected() ) {
               etiqueta.setText( "Ésta es la apariencia visual " +
                  s1 + " seleccionada"+cuenta );
               cuadroCombinado.setSelectedIndex( cuenta );
               cambiarLaAparienciaVisual( cuenta );
            }
      }

   } // fin de la clase interna privada ManejadorEventos

} // fin de la clase DemoAparienciaVisual