gentoo linux, java, software libre y otras hierbas
Dic, 11 2007 - 4:15 pm

[código] GUIs en Java (Botones de Radio, Menús y Listas)

(anterior) En esta sección se presentan varios de los componentes de Java para la creación de interfaces gráficas de usuario. Los componentes de Swing pueden personalizarse para asemejarse a la apariencia de la plataforma computacional en la que se ejecute el programa, o pueden usar la apariencia visual de Java para brindar una interfaz idéntica en cualquier Sistema Operativo. Esta sección se centra en el uso de botones de radio, menus y listas.

Las clases ButtonGroup y JRadioButton

// Creación de botones de opción, utilizando ButtonGroup y JRadioButton.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class PruebaBotonOpcion extends JFrame
{
   private JTextField campo;
   private Font tipoLetraSimple, tipoLetraNegrita, tipoLetraCursiva, tipoLetraNegritaCursiva;
   private JRadioButton botonSimple, botonNegrita, botonCursiva,
      botonNegritaCursiva;
   private ButtonGroup grupoBotonesOpcion;

   // crear GUI y tipos de letra
   public PruebaBotonOpcion()
   {
      super( "Prueba de RadioButton" );

      // obtener panel de contenido y establecer su esquema
      Container contenedor = getContentPane();
      contenedor.setLayout( new FlowLayout() );

      // establecer JTextField
      campo = new JTextField( "Observe cómo cambia el estilo del tipo de letra", 30 );
      contenedor.add( campo ); 

      // crear botones de opción
      botonSimple = new JRadioButton( "Simple", true );
      contenedor.add( botonSimple );

      botonNegrita = new JRadioButton( "Negrita", false );
      contenedor.add( botonNegrita );

      botonCursiva = new JRadioButton( "Cursiva", false );
      contenedor.add( botonCursiva );

      botonNegritaCursiva = new JRadioButton( "Negrita/Cursiva", false );
      contenedor.add( botonNegritaCursiva );

      // crear relación lógica entre objetos JRadioButton
      grupoBotonesOpcion = new ButtonGroup();
      grupoBotonesOpcion.add( botonSimple );
      grupoBotonesOpcion.add( botonNegrita );
      grupoBotonesOpcion.add( botonCursiva );
      grupoBotonesOpcion.add( botonNegritaCursiva );

      // crear objetos de tipo de letra
      tipoLetraSimple = new Font( "Serif", Font.PLAIN, 14 );
      tipoLetraNegrita = new Font( "Serif", Font.BOLD, 14 );
      tipoLetraCursiva = new Font( "Serif", Font.ITALIC, 14 );
      tipoLetraNegritaCursiva = new Font( "Serif", Font.BOLD + Font.ITALIC, 14 );
      campo.setFont( tipoLetraSimple );  // establecer tipo de letra inicial

      // registrar eventos para objetos JRadioButton
      botonSimple.addItemListener( new ManejadorBotonOpcion( tipoLetraSimple ) );
      botonNegrita.addItemListener( new ManejadorBotonOpcion( tipoLetraNegrita ) );
      botonCursiva.addItemListener( new ManejadorBotonOpcion( tipoLetraCursiva ) );
      botonNegritaCursiva.addItemListener( new ManejadorBotonOpcion( tipoLetraNegritaCursiva ) );

      setSize( 350, 100 );
      setVisible( true );

   } // fin del constructor de PruebaBotonOpcion

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

   // clase interna privada para manejar eventos de botón de opción
   private class ManejadorBotonOpcion implements ItemListener {
      private Font tipoDeLetra;

      public ManejadorBotonOpcion( Font f )
      {
         tipoDeLetra = f;
      }

      // manejar eventos de botón de opción
      public void itemStateChanged( ItemEvent evento )
      {
         campo.setFont( tipoDeLetra );
      }

   } // fin de la clase interna privada ManejadorBotonOpcion

} // fin de la clase PruebaBotonOpcion


Descargar código fuente

Uso de un objeto JComboBox para seleccionar una imagen a mostrar

// Uso de un objeto JComboBox para seleccionar una imagen a mostrar.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class PruebaCuadroComb extends JFrame
{
   private JComboBox cuadroCombImagenes;
   private JLabel etiqueta;

   private String nombres[]={ "quake1.png", "quake2.png",  "counterstrike.png", "counterstrike2.png" };
   private Icon iconos[] = { new ImageIcon( nombres[ 0 ] ),
      new ImageIcon( nombres[ 1 ] ), new ImageIcon( nombres[ 2 ] ),
      new ImageIcon( nombres[ 3 ] ) };

   // configurar GUI
   public PruebaCuadroComb()
   {
      super( "Prueba de JComboBox" );

      // obtener panel de contenido y establecer su esquema
      Container contenedor = getContentPane();
      contenedor.setLayout( new FlowLayout() );      

      // establecer objeto JComboBox y registrar su manejador de eventos
      cuadroCombImagenes = new JComboBox( nombres );
      cuadroCombImagenes.setMaximumRowCount( 3 );
      cuadroCombImagenes.addItemListener(

         new ItemListener() {  // clase interna anónima 

            // manejar evento para JComboBox
            public void itemStateChanged( ItemEvent evento )
            {
               // determinar si la casilla de verificación está seleccionada
			   if ( evento.getStateChange() == ItemEvent.SELECTED )
                  etiqueta.setIcon( iconos[
                     cuadroCombImagenes.getSelectedIndex() ] );
            }

         }  // fin de la clase interna anónima

      ); // fin de la llamada a addItemListener

      contenedor.add( cuadroCombImagenes );

      // establecer objeto JLabel para mostrar objetos ImageIcon
      etiqueta = new JLabel( iconos[ 1 ] );
      contenedor.add( etiqueta );

      setSize( 350, 150 );
      setVisible( true );

   } // fin del constructor de PruebaCuadroComb

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

} // fin de la clase PruebaCuadroComb


Descargar código fuente

Selección de colores con un objeto JList

// Selección de colores de un objeto JList.
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;

public class PruebaLista extends JFrame {
   private JList listaColores;
   private Container contenedor;

   private final String nombresColores[] = { "Negro", "Azul", "Cyan",
      "Gris oscuro", "Gris", "Verde", "Gris claro", "Magenta",
      "Naranja", "Rosa", "Rojo", "Blanco", "Amarillo" };

   private final Color colores[] = { Color.BLACK, Color.BLUE, Color.CYAN,
      Color.DARK_GRAY, Color.GRAY, Color.GREEN, Color.LIGHT_GRAY,
      Color.MAGENTA, Color.ORANGE, Color.PINK, Color.RED, Color.WHITE,
      Color.YELLOW };

   // configurar GUI
   public PruebaLista()
   {
      super( "Prueba de JList" );

      // obtener panel de contenido y establecer su esquema
      contenedor = getContentPane();
      contenedor.setLayout( new FlowLayout() );

      // crear una lista con elementos del arreglo nombresColores
      listaColores = new JList( nombresColores );
      listaColores.setVisibleRowCount( 5 );

      // no permitir selecciones múltiples
      listaColores.setSelectionMode( ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);

      // agregar un objeto JScrollPane, que contiene a JList, al panel de contenido
      contenedor.add( new JScrollPane( listaColores ) );
      listaColores.addListSelectionListener(

         new ListSelectionListener() {  // clase interna anónima

            // manejar eventos de selección en la lista
            public void valueChanged( ListSelectionEvent evento )
            {
               contenedor.setBackground(
                  colores[ listaColores.getSelectedIndex() ] );
            }

         } // fin de la clase interna anónima

      ); // fin de la llamada a addListSelectionListener

      setSize( 350, 150 );
      setVisible( true );

   } // fin del constructor de PruebaLista
   public static void main( String args[] )
   {
      JFrame.setDefaultLookAndFeelDecorated(true);
      PruebaLista aplicacion = new PruebaLista();
      aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
   }
} // fin de la clase PruebaLista


Descargar código fuente

Como copiar elementos de una lista (JList) a otra

// Cómo copiar elementos de una lista a otra.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class PruebaSeleccionMultiple extends JFrame
{
   private JList listaColores, listaCopia;
   private JButton botonCopiar;
   private final String nombresColores[] = { "Negro", "Azul", "Cyan",
      "Gris oscuro", "Gris", "Verde", "Gris claro", "Magenta", "Naranja",
      "Rosa", "Rojo", "Blanco", "Amarillo" };

   // configurar GUI
   public PruebaSeleccionMultiple()
   {
      super( "Listas de selección múltiple" );

      // obtener panel de contenido y establecer su esquema
      Container contenedor = getContentPane();
      contenedor.setLayout( new FlowLayout() );

      // establecer objeto JList listaColores
      listaColores = new JList( nombresColores );
      listaColores.setVisibleRowCount( 5 );
      listaColores.setSelectionMode(
         ListSelectionModel.MULTIPLE_INTERVAL_SELECTION );
      contenedor.add( new JScrollPane( listaColores ) );

      // crear botón copiar y registrar su componente de escucha
      botonCopiar = new JButton( "Copiar >>>" );
      botonCopiar.addActionListener(

         new ActionListener() {  // clase interna anónima 

            // manejar evento de botón
            public void actionPerformed( ActionEvent evento )
            {
               // colocar valores seleccionados en listaCopia
               listaCopia.setListData( listaColores.getSelectedValues() );
            }

         } // fin de clase interna anónima

      ); // fin de la llamada a addActionListener

      contenedor.add( botonCopiar );

      // establecer objeto JList listaCopia
      listaCopia = new JList( );
      listaCopia.setVisibleRowCount( 5 );
      listaCopia.setFixedCellWidth( 100 );
      listaCopia.setFixedCellHeight( 15 );
      listaCopia.setSelectionMode(
         ListSelectionModel.SINGLE_INTERVAL_SELECTION );
      contenedor.add( new JScrollPane( listaCopia ) );

      setSize( 325, 130 );
      setVisible( true );

   } // fin del constructor PruebaSeleccionMultiple

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

} // fin de la clase PruebaSeleccionMultiple


Descargar código fuente

Etiquetas: hack, java
Los ejercicios utilizados en este post están basados en ejemplos del libro Cómo programar en Java de Deitel, y por lo tanto están bajo la licencia que esta editorial disponga.

14 Comentarios | deja el tuyo

Un enlace entrante

13 Comentarios en “[código] GUIs en Java (Botones de Radio, Menús y Listas)”

  1. Hell Knight dice:

    Excelente tutorial, muchas gracias. La informacion me fue de mucha utilidad. Gracias en serio, ojala y existieran mas blogs como este (=P

  2. Lopes dice:

    Perdón por comentar en un post tan antiguo.

    Pero, ¿podrias decirme si es posible añadir iconos a los ítems de una JList?

    Gracias

  3. Cristian dice:

    @Lopes: los constructores normales de JList no permite hacerlo. Por lo que si quieres implementarlo tendrás que crearte tu propio JList.

    Un saludo!

  4. Hola me gustaria que me saver como puedo crear un reproductor de sonido mas o menos como winamp esto pero en java asi q me gustaria saver como tengo q hacer para reconocer sonidos en java por favor cualquier colaboracion ami correo gracias. pirata3000

  5. veglio dice:

    por favot no podria mader me totos los eventos ha mi correo que es vegtemmblerr@hotmail.com
    estudio quiciera saber mas de esto que es perdon que no ponga algo , voyarevisar esto mi casa con con cuidado.
    gracias y gracias por tu hayuda me hace falta proque me ronpe la cabeza y vuelvo ha roper otra otra y orta mas

  6. marcelo alberto melo castillo dice:

    magnifica pagima d egran ayuda para ejemplos practicos

  7. anferruqui dice:

    hola amigos kiero ejemplos delcomando Choice

  8. jhon villegas dice:

    hola a

  9. jhon villegas dice:

    hola a todos estoy

  10. jhon villegas dice:

    hola muchachos estoy empezando en el mindo de la programacion y trabajo con java y sus ejemplos son muy buenisimos
    pero en estos momentos estamos trabajando con un entorno de desarrollo que es netbeans y me pregunto si no tienen ejemplos de java en netbenans seria muy bueno que publicaran esos proyectos.
    muchas gracias

  11. Cristian dice:

    Hola Jhon,

    Desafortunadamente, así como tu usas NetBeans hay otros que usan Eclipse, MonoDevelop, JBlue, JCreator, etc. Así que los ejemplos están solo en código para hacerlos lo más universales posibles.

    Si te fijas, a la hora de usar NetBeans, lo único que debes hacer es crear un nuevo proyecto y poner las fuentes en su lugar y ya está.

    No se te olvide que NetBeans es solo un IDE, y no quiere decir que sea otro tipo de programación.

    Un saludo!

  12. kortana dice:

    hola una pregunta como podria ponerle letras o un mensaje ahi mismo dond aparece el color y conforme cambie el color vaya saliendo un mensaje

  13. Miguel Arroyo dice:

    Amigo estan muy buenos tus ejemplos, sin embargo me gustaria que subieras uno donde pudiera usar el objeto que he seleccionado en la JList (si lo puedes enviar, mi correo es miguelarroyo_12@yahoo.com) gracias!!!

¡Déjanos tu comentario!