[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
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
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
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









Cristian dice:
Noviembre 18th, 2008 a las 8:45 pm
Échale un ojo a esto:
http://www.casidiablo.net/wordpress/index.php/2007/12/17/como-crear-interfaces-graficas-con-look-and-feel-en-java/
Un saludo!
jkmilo dice:
Noviembre 18th, 2008 a las 9:30 pm
upa gracias eso ta interesante gracias de nuevo
Dania dice:
Noviembre 20th, 2008 a las 2:41 pm
hola…disculpa que te moleste …pero queria preguntar que hay que hacer para seleccionar y guardar más de una opción en un jcomboBox…estoy trabajando en netbeans…porfavor ojala me puedas ayudar…adios
Cristian dice:
Noviembre 20th, 2008 a las 7:37 pm
Que yo sepa no se puede… mejor usar JList.
Un saludo!
Jhorsen dice:
Noviembre 21st, 2008 a las 9:00 am
WENO MIRA LO QUE IOP NECESITO ES QUE ME COLABOREN NECESITO METER DATOS A UN JComboBox pero yo llamo los datos desde un archivo y los almaceno es un string osea ya lo que hago es cada dato del archivo tenerlo en un arreglo o en un vector pero necesito que ingresar cada valor que tiene el vector o el arreglo sea introducido al JComboBox… gracias y ps too bn
Cristian dice:
Noviembre 22nd, 2008 a las 10:36 am
En ese caso debes usar el método addItem:
http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JComboBox.html#addItem(java.lang.Object)
Un saludo!
carlos dice:
Diciembre 18th, 2008 a las 3:09 am
tengo una duda y kisiera k me ayudaran lo k kiero es k con cada click de un boton dentro de un panel agregue una etiqueta dentro de otro panel la verdad no tengo mucha idea para resolver esto. mi correo es caom_13@hotmail.com gracias de antemano
Cristian dice:
Diciembre 18th, 2008 a las 10:02 am
Hola Carlos.
Hay ejemplos de manejo de eventos aquÃ:
http://casidiablo.net/java/
Un saludo!