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





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
Hola Carlos.
Hay ejemplos de manejo de eventos aquí:
http://casidiablo.net/java/
Un saludo!
primero que todo quiero felicitarlos que web tan vacana es una gran ayuda y lo segundo es si porfavor me pueden indicar donde guardo la imagen para que se muestre en el boton gracias
Que super estan los programas ahora si entiendo como funcionan las casillas de verificacion gracias por comentar los programas para los que venimos aprendiendo es de gran ayuda. hay cosas que con los libros no las entiendo bien
una pequeña pregunta….¿Como hago para utilizar una variable en varios eventos?
EJEMPLO. capturo y convierto en una variable x el dato de un JTextField, con un JButton 1, pero quiero usar mi variable x en un segundo evento en un JButton 2…
¿como hago?
En realidad no entiendo tu pregunta :-/
Ok me explico mejor:
creo un evento en un boton JButton el cual captura un dato de un JTextField y ese dato lo guardo en una variable x.
pero resulta q tengo un segundo JButton y un segundo JTextField. Y, en el evento de este segundo boton necesito usar la variable x que capture en el evento anterior y seguir capturando datos pero con el segundo JTextField….
todavia no esta claro¿? O_O”
por q ese mismo problema me ha venido pasando pero solo en java, pero en otro como C# no me pasa esto.
Eso no tiene misterio alguno. Sólo debes tener en cuenta que la variable x debe ser global para los dos eventos. Te escribo parte de lo que yo haría:
String x;JButton btn2, btn1;
JTextField txt1, txt2;
....//cosas
public void actionPerformed(Action e){
if(e.getSource()==btn1){
x = txt1.getText();//aqui guardaste el dato
}
if(e.getSource()==btn2){
txt2.setText(x);//aqui lo estas usando
}
}
//mas cosas
¿Cual es exactamente tu error? o_O
OK probare lo q me has dicho y gracias de antemano…!! O_O”
Ey amigo gracias tu consejo me aclaró muchas dudas….
t queria pedir un pequeño favor… si tienes algun tutorial o algunos ejemplos para entornos graficos en java… más específicamente para juegos… me los enviaras al correo digo… si no tienes problema alguno.
gracias O_O”
El anterior mensaje va para todos los q lo vean es urgente!!!
O_O”
hola alguien me puede ayudar, necesito poner una imagen de fondo en un menu estoy utilizando un container. por favor
Lo mejor que puedes hacer es:
Crear una clase que herede de Container, y sobrecargar el método paint de la misma para poner la imagen.
Recuerda además que debes ponerlo transparente… si mal no recuerdo el método para hacer ello es setOpaque(false); solo busca algo de información en la red.
Un saludo.
pucha… excelente, hoy no duermo practicando estas fuentes, gracias gracias. saludos
tengoun poco de problemas para colocar los botones donde yo quiero tenerlos dentro del recuadro