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.

62 Comentarios | deja el tuyo

Un enlace entrante

61 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.

  6. javier dice:

    solo pon ke tus programas son del deitel
    jajaja

  7. axel dice:

    podrian poner el codia de un manajador de aplicaciones es de urgencia
    gracias

  8. hugo dice:

    tus codigos estan muy bien primera ves que entro a tu blog yo soy principiante en netbeans 7.0 y anteriores debo de hacer un programa de listas en lazadas y doblemente enlazadas de lifo fifo y eliminados 4 botones luego te paso un diseño para ver si me puedes ayudar por favor gracias

  9. gonzalo dice:

    hola mi problema es que al dibujar la imagen en el jframe y al ejecutar la aplicacion los objetos como botones,etiquetas,cajas de texto,etc estos no aparecen en ejecucion y solo aparecen si paso el mouse por encima de estos como es el codigo o la opcion para que aparescan tal y como los arrastre desde la paleta de swinsi no es mucha molestia el codigo lo envian a mi correo gonzacj4@hotmail.com gracias de antemano

  10. juan dice:

    Hola soy novato en java queria consultar como pueo si quiero oprimir un botón y agregar el titulo del mismo(boton) a una lista.Es una clase donde me muestra 6 botones y una lista.Saludos y gracias.

  11. edgar castro dice:

    es buenicimo me ayudo mucho
    muchas gracias

  12. Enmanuel dice:

    Como Entonces se Prondria en Subrayado…

  13. Enmanuel dice:

    Yo no soy muy experto pero estoy haciendo un programa similar a ese, que cuando se selecione un jcheckbox se ponga en negrita, cursiva a un JLabel pero no he podido hacerlo con lo de Subrayado, por favor ayuden me…

¡Déjanos tu comentario!