gentoo linux, java, software libre y otras hierbas
Dic, 11 2007 - 3:46 pm

[código] GUIs en Java (Labels, Botones, Chekbox y Campos de texto)

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 ilustra la jerarquía javax.swing, y se centra en el uso de labels, botones, casillas de verificación, y campos de texto.

La clase JLabel

// Demostración de la clase JLabel.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class PruebaEtiqueta extends JFrame {
   private JLabel etiqueta1, etiqueta2, etiqueta3;

   // configurar GUI
   public PruebaEtiqueta()
   {
      super( "Prueba de JLabel" );

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

      // constructor de JLabel con un argumento cadena
      etiqueta1 = new JLabel( "Etiqueta con texto" );
      etiqueta1.setToolTipText( "Esta es la etiqueta1" );
      contenedor.add( etiqueta1 );

      // constructor de JLabel con argumentos cadena, Icono y alineación
      Icon quake = new ImageIcon( "quake.gif" );
      etiqueta2 = new JLabel( "Etiqueta con texto e icono", quake,
         SwingConstants.LEFT );
      etiqueta2.setToolTipText( "Esta es la etiqueta2" );
      contenedor.add( etiqueta2 );

      // constructor de JLabel sin argumentos
      etiqueta3 = new JLabel();
      etiqueta3.setText( "Etiqueta con icono y texto en parte inferior" );
      etiqueta3.setIcon( quake );
      etiqueta3.setHorizontalTextPosition( SwingConstants.CENTER );
      etiqueta3.setVerticalTextPosition( SwingConstants.BOTTOM );
      etiqueta3.setToolTipText( "Esta es la etiqueta3" );
      contenedor.add( etiqueta3 );

      setSize( 275, 170 );
      setVisible( true );

   } // fin del constructor

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

} // fin de la clase PruebaEtiqueta


Descargar código fuente

La clase JTextField

// Demostración de la clase JTextField.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class PruebaCampoTexto extends JFrame
{
   private JTextField campoTexto1, campoTexto2, campoTexto3;
   private JPasswordField campoContrasenia;

   // configurar GUI
   public PruebaCampoTexto()
   {
      super( "Prueba de JTextField y JPasswordField" );

      Container contenedor = getContentPane();
      contenedor.setLayout( new FlowLayout() );

      // crear campo de texto con tamaño predeterminado
      campoTexto1 = new JTextField( 10 );
      contenedor.add( campoTexto1 );

      // crear campo de texto con texto predeterminado
      campoTexto2 = new JTextField( "Escriba el texto aquí" );
      contenedor.add( campoTexto2 );

      // crear campo de texto con texto predeterminado,
      // 20 elementos visibles y sin manejador de eventos
      campoTexto3 = new JTextField( "Campo de texto no editable", 20 );
      campoTexto3.setEditable( false );
      campoTexto3.setToolTipText("Ésta mierda no se edita");

      contenedor.add( campoTexto3 );

      // crear campo de contraseña con texto predeterminado
      campoContrasenia = new JPasswordField( "Texto oculto" );
      contenedor.add( campoContrasenia );

      // registrar manejadores de eventos
      ManejadorCampoTexto manejador = new ManejadorCampoTexto();
      campoTexto1.addActionListener( manejador );
      campoTexto2.addActionListener( manejador );
      campoTexto3.addActionListener( manejador );
      campoContrasenia.addActionListener( manejador );

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

   } // fin del constructor de PruebaCampoTexto

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

   // clase interna privada para el manejo de eventos
   private class ManejadorCampoTexto implements ActionListener
   {
      // procesar eventos de campo de texto
      public void actionPerformed( ActionEvent evento )
      {
         String cadena = "";

         // el usuario oprimió Intro en objeto JTextField campoTexto1
         if ( evento.getSource() == campoTexto1 )
            cadena = "campoTexto1: " + evento.getActionCommand();

         // el usuario oprimió Intro en objeto JTextField campoTexto2
         else if ( evento.getSource() == campoTexto2 )
            cadena = "campoTexto2: " + evento.getActionCommand();

         // el usuario oprimió Intro en objeto JTextField campoTexto3
         else if ( evento.getSource() == campoTexto3 )
            cadena = "campoTexto3: " + evento.getActionCommand();

         // el usuario oprimió Intro en objeto JTextField campoContrasenia
         else if ( evento.getSource() == campoContrasenia ) {
            cadena = "campoContrasenia: " +
               new String( campoContrasenia.getPassword() );
         }

         JOptionPane.showMessageDialog( null, cadena,"Resultados",JOptionPane.CANCEL_OPTION);

      } // fin del método actionPerformed

   } // fin de la clase interna privada ManejadorCampoTexto

} // fin de la clase PruebaCampoTexto


Descargar código fuente

La clase JButton

// Creación de objetos JButton.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class PruebaBoton extends JFrame
{
   private JButton botonSimple, botonElegante;

   // configurar GUI
   public PruebaBoton()
   {
      super( "Prueba de botones" );

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

      // crear botones
      botonSimple = new JButton( "Botón simple" );
      contenedor.add( botonSimple );

      Icon quake1 = new ImageIcon( "quake1.png" );
      Icon quake2 = new ImageIcon( "quake2.png" );
      botonElegante = new JButton( "Botón elegante", quake1 );
      botonElegante.setRolloverIcon( quake2 );
      contenedor.add( botonElegante );

      // crear una instancia de la clase interna ManejadorBoton
      // a usar para el manejo de eventos de botones
      ManejadorBoton manejador = new ManejadorBoton();
      botonElegante.addActionListener( manejador );
      botonSimple.addActionListener( manejador );

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

   } // fin del constructor de PruebaBoton

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

   // clase interna para el manejo de eventos de botón
   private class ManejadorBoton implements ActionListener
   {
      // manejar evento de botón
      public void actionPerformed( ActionEvent evento )
      {
         JOptionPane.showMessageDialog( PruebaBoton.this,
            "Usted oprimió: " + evento.getActionCommand() );
      }

   } // fin de la clase interna privada ManejadorBoton

} // fin de la clase PruebaBoton


Descargar código fuente

La clase JCheckBox

// Creación de botones JCheckBox.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class PruebaCasillaVerificacion extends JFrame
{
   private JTextField campo;
   private JCheckBox negrita, cursiva;

   // configurar GUI
   public PruebaCasillaVerificacion()
   {
      super( "Prueba de JCheckBox" );

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

      // configurar objeto JTextField y establecer su tipo de letra
      campo = new JTextField( "Observe el cambio en el estilo de tipo de letra", 25 );
      campo.setFont( new Font( "Serif", Font.PLAIN, 14 ) );
      contenedor.add( campo );

      // crear objetos casilla de verificación
      negrita = new JCheckBox( "Negrita" );
      contenedor.add( negrita );     

      cursiva = new JCheckBox( "Cursiva" );
      contenedor.add( cursiva );

      // registrar componentes de escucha para los objetos JCheckBox
      ManejadorCasillaVerificacion manejador = new ManejadorCasillaVerificacion();
      negrita.addItemListener( manejador );
      cursiva.addItemListener( manejador );

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

   } // fin del constructor de PruebaCasillaVerificacion

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

   // clase interna privada para manejo de eventos de ItemListener
   private class ManejadorCasillaVerificacion implements ItemListener {
      private int valNegrita = Font.PLAIN;
      private int valCursiva = Font.PLAIN;

      // responder a eventos de casilla de verificación
      public void itemStateChanged( ItemEvent evento )
      {
         // procesar eventos de casilla de verificación negrita
         if ( evento.getSource() == negrita )
            valNegrita = negrita.isSelected() ? Font.BOLD : Font.PLAIN;

         // procesar eventos de casilla de verificación cursiva
         if ( evento.getSource() == cursiva )
            valCursiva = cursiva.isSelected() ? Font.ITALIC : Font.PLAIN;

         // establecer tipo de letra del campo de texto
         campo.setFont( new Font( "Serif", valNegrita + valCursiva, 14 ) );

      } // fin del método itemStateChanged

   } // fin de la clase interna privada ManejadorCasillaVerificacion

} // fin de la clase PruebaCasillaVerificacion


Descargar código fuente

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.

52 Comentarios | deja el tuyo

Un enlace entrante

51 Comentarios en “[código] GUIs en Java (Labels, Botones, Chekbox y Campos de texto)”

  1. maria dice:

    ya hic el codigo que pones de ejmplo con las etiquetas. hice otro pero la imagen no sale. puse de la ruta pero ni haci salio. como le hago para que me aparesca

  2. Marcelo Silvero dice:

    tendrías algún ejemplo sobre cómo enlazar controles con datos de una base de datos access?? o algún ejemplo de cómo utilizar eclipse para enlazar datos a controles..?

  3. DIEGO MERLOS dice:

    ho0olax que tal hermano he descargado algunos de tus programas para apoyo pero saves tengo un problema cuando empiezo a usar botones y setlayout y tipo de esas librerias te dejo esto
    PruebaBoton.java:6: PruebaBoton clashes with package of same name
    public class PruebaBoton extends JFrame
    ^
    PruebaBoton.java:42: cannot resolve symbol
    symbol : method setDefaultLookAndFeelDecorated (boolean)
    location: class javax.swing.JFrame
    JFrame.setDefaultLookAndFeelDecorated(true);
    ^
    PruebaBoton.java:43: cannot resolve symbol
    symbol : method setDefaultLookAndFeelDecorated (boolean)
    location: class javax.swing.JDialog
    JDialog.setDefaultLookAndFeelDecorated(true);
    ^
    3 errors

    —-jGRASP wedge2: exit code for process is 1.
    —-jGRASP: operation complete.

    me pone esa serie de errores quisiera sever como solucionarlos mi mail es akido_mersan@hotmail.com espero contar con tu ayuda

  4. agustin dice:

    hola me gustaria saber como seleccionar varias opciones en un JCheckBox, ya que cuando yo lo hago solo se lecciona una y se deselecciona la otra, he intentado poniendo una opcion que diga seleccionar todos al marcar se les ponga setSelecter(true) a las demas pero solo queda seleccionada la ultima, deceo hacerlo con un JCheckBox. espero puedan ayudarme a despegar esta duda. gracias

  5. Mario dice:

    Hola! Ocupo ayuda. Tengo que tomar dos números de los Jtextfield y compararlos. Es un mundialito con 8 equipos.

¡Déjanos tu comentario!