java swing (parte i)

Anuncio
Programación interactiva
Oscar Bedoya
[email protected]
Interfaces gráficas con
Java Swing
Swing
• Una interfaz gráfica con el usuario (GUI) es un mecanismo incorporado en
las aplicaciones para hacer más amigable y entendible la interacción con el
usuario
•Las GUIs se crean a partir de componentes, éstos permiten que el usuario
interactúe mediante el ratón, teclado y otras formas de entrada.
Swing
Estructura de las aplicaciones GUI
•Declarar una clase que herede de la superclase JFrame
•Declarar cada componente que hará parte de la GUI
•Dentro del método constructor, crear y organizar los componentes
•Declarar el método main
Swing
Estructura de las aplicaciones GUI
•Declarar una clase que herede de la superclase JFrame
•Declarar cada componente que hará parte de la GUI
•Dentro del método constructor, crear y organizar los componentes
•Declarar el método main
Swing
JFrame
Clase
Clase()
main()
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GUI extends JFrame {
public GUI()
{
super( "Título de la GUI" );
Container contenedor = getContentPane();
contenedor.setLayout( new FlowLayout() );
setSize( 275, 170 );
setVisible( true );
}
public static void main( String a[] )
{
GUI aplicacion = new GUI();
aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
}
Swing
JFrame
GUI
GUI()
main()
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GUI extends JFrame {
Toda GUI debe heredar
de la clase JFrame
public GUI()
{
super( "Título de la GUI" );
Container contenedor = getContentPane();
contenedor.setLayout( new FlowLayout() );
setSize( 275, 170 );
setVisible( true );
}
public static void main( String a[] )
{
GUI aplicacion = new GUI();
aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
}
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GUI extends JFrame {
public GUI()
{
Se debe DECLARAR cada
componente que hará
parte de la GUI
super( "Título de la GUI" );
Container contenedor = getContentPane();
contenedor.setLayout( new FlowLayout() );
setSize( 275, 170 );
setVisible( true );
}
public static void main( String a[] )
{
GUI aplicacion = new GUI();
aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
}
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GUI extends JFrame {
public GUI()
Método constructor
{
super( "Título de la GUI" );
Container contenedor = getContentPane();
contenedor.setLayout( new FlowLayout() );
setSize( 275, 170 );
setVisible( true );
CREAR cada componente y
organizarlo de acuerdo a lo
que se requiere
}
public static void main( String a[] )
{
GUI aplicacion = new GUI();
aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
}
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GUI extends JFrame {
public GUI()
{
super( "Título de la GUI" );
Container contenedor = getContentPane();
contenedor.setLayout( new FlowLayout() );
setSize( 275, 170 );
setVisible( true );
}
public static void main( String a[] )
{
GUI aplicacion = new GUI();
Se crea un objeto de
la aplicación
aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE);
}
}
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GUI extends JFrame {
public GUI()
Método constructor
{
super( "Título de la GUI" );
Establecer el título de la ventana
Container contenedor = getContentPane();
contenedor.setLayout( new FlowLayout() );
setSize( 275, 170 );
setVisible( true );
}
public static void main( String a[] )
{
GUI aplicacion = new GUI();
aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
}
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GUI extends JFrame {
public GUI()
{
super( "Título de la GUI" );
Container contenedor = getContentPane();
contenedor.setLayout( new FlowLayout() );
Crear el contenedor. Es el espacio que
mantiene el contenido de la ventana
setSize( 275, 170 );
setVisible( true );
}
public static void main( String a[] )
{
GUI aplicacion = new GUI();
aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
}
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GUI extends JFrame {
public GUI()
{
super( "Título de la GUI" );
Container contenedor = getContentPane();
contenedor.setLayout( new FlowLayout() );
Crear el contenedor. Es el espacio que
mantiene el contenido de la ventana
setSize( 275, 170 );
setVisible( true );
}
public static void main( String a[] )
{
GUI aplicacion = new GUI();
aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
}
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GUI extends JFrame {
public GUI()
{
super( "Título de la GUI" );
Container contenedor = getContentPane();
contenedor.setLayout( new FlowLayout() );
Crear el contenedor. Es el espacio que
mantiene el contenido de la ventana
setSize( 275, 170 );
setVisible( true );
}
public static void main( String a[] )
{
GUI aplicacion = new GUI();
aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
}
Contenedor
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GUI extends JFrame {
public GUI()
{
super( "Título de la GUI" );
Container contenedor = getContentPane();
contenedor.setLayout( new FlowLayout() );
setSize( 275, 170 );
setVisible( true );
}
Se establecen las
dimensiones de la
ventana
public static void main( String a[] )
{
GUI aplicacion = new GUI();
aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
}
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GUI extends JFrame {
public GUI()
{
Algunos componentes que se pueden
agregar al contenedor:
•JLabel
•JButton
•JTextField
super( "Título de la GUI" );
•JCheckButtton
Container contenedor = getContentPane();
•JRadioButton
contenedor.setLayout( new FlowLayout() );
setSize( 275, 170 );
•JList
setVisible( true );
}
public static void main( String a[] )
{
GUI aplicacion = new GUI();
aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE);
}
}
import java.awt.*;
import java.awt.event.*;
Algunos componentes que se pueden
agregar al contenedor:
import javax.swing.*;
public class GUI extends JFrame {
public GUI()
Declarar
•JLabel
•JButton
•JTextField
{
super( "Título de la GUI" );
•JCheckButtton
Container contenedor = getContentPane();
•JRadioButton
contenedor.setLayout( new FlowLayout() );
setSize( 275, 170 );
setVisible( true );
}
•JList
Crear y organizar
public static void main( String a[] )
{
GUI aplicacion = new GUI();
aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE);
}
}
Swing
JLabel (Etiqueta)
•Las etiquetas son componentes que permiten mostrar un mensaje, en
texto o gráfico, de tal manera que el usuario tenga una idea más clara
de cómo interactuar con la aplicación
Etiqueta
Etiqueta
Swing
Swing
JLabel (Etiqueta)
•Declarar la etiqueta
private JLabel etiqueta1;
•Crear la etiqueta
Se tienen varias formas
etiqueta1=new JLabel(“Texto de la etiqueta”);
contenedor.add(etiqueta1);
Swing
JLabel (Etiqueta)
•Declarar la etiqueta
private JLabel etiqueta1;
•Crear la etiqueta
Se tienen varias formas
etiqueta1=new JLabel(“Texto de la etiqueta”);
contenedor.add(etiqueta1);
contenedor.add(etiqueta1);
Inicialmente el contenedor está vacío
Swing
JLabel (Etiqueta)
•Declarar la etiqueta
private JLabel etiqueta1;
•Crear la etiqueta
Se tienen varias formas
etiqueta1=new JLabel(“Texto de la etiqueta”);
etiqueta1.setToolTipText( "Esta es la etiqueta 1" );
contenedor.add(etiqueta1);
Swing
JLabel (Etiqueta)
•Declarar la etiqueta
private JLabel etiqueta1;
•Crear la etiqueta
Se tienen varias formas
etiqueta1=new JLabel(“Texto de la etiqueta”);
etiqueta1.setToolTipText( "Esta es la etiqueta 1" );
contenedor.add(etiqueta1);
El método setToolTipText permite establecer el
texto que se mostrará en caso de que el usuario
pase el mouse por encima de la etiqueta
Swing
JLabel (Etiqueta)
•Declarar la etiqueta
private JLabel etiqueta1;
•Crear la etiqueta
Se tienen varias formas
etiqueta1=new JLabel(“Texto de la etiqueta”);
etiqueta1.setToolTipText( "Esta es la etiqueta 1" );
contenedor.add(etiqueta1);
Swing
Otra forma consiste en crear una etiqueta con icono
Icon imagen = new ImageIcon( "image1.gif" );
etiqueta2 = new JLabel( "Etiqueta con texto e icono“);
etiqueta2.setIcon(imagen);
etiqueta2.setHorizontalTextPosition(SwingConstants.RIGHT);
etiqueta2.setToolTipText( "Esta es la etiqueta2" );
contenedor.add( etiqueta2 );
Swing
Otra forma consiste en crear una etiqueta con icono
Icon imagen = new ImageIcon( "image1.gif" );
etiqueta2 = new JLabel( "Etiqueta con texto e icono“);
etiqueta2.setIcon(imagen);
etiqueta2.setHorizontalTextPosition(SwingConstants.RIGHT);
etiqueta2.setToolTipText( "Esta es la etiqueta2" );
contenedor.add( etiqueta2 );
Swing
Otra forma
etiqueta3 = new JLabel();
etiqueta3.setText( "Etiqueta con icono y texto en parte inferior" );
etiqueta3.setIcon( imagen );
etiqueta3.setVerticalTextPosition( SwingConstants.BOTTOM );
etiqueta3.setToolTipText( "Esta es la etiqueta3" );
contenedor.add( etiqueta3 );
Swing
Otra forma
etiqueta3 = new JLabel();
etiqueta3.setText( "Etiqueta con icono y texto en parte inferior" );
etiqueta3.setIcon( imagen );
etiqueta3.setVerticalTextPosition( SwingConstants.BOTTOM );
etiqueta3.setToolTipText( "Esta es la etiqueta3" );
contenedor.add( etiqueta3 );
El texto debe aparecer
debajo del icono
Swing
Otra forma
etiqueta3 = new JLabel();
etiqueta3.setText( "Etiqueta con icono y texto en parte inferior" );
etiqueta3.setIcon( imagen );
etiqueta3.setVerticalTextPosition( SwingConstants.BOTTOM );
etiqueta3.setToolTipText( "Esta es la etiqueta3" );
contenedor.add( etiqueta3 );
Las constantes de posición horizontal en
SwingConstants son: LEFT, CENTER, RIGHT y
en la posición vertical son TOP, CENTER,
BOTTOM
Swing
Otra forma
etiqueta3 = new JLabel();
etiqueta3.setText( "Etiqueta con icono y texto en parte inferior" );
etiqueta3.setIcon( imagen );
etiqueta3.setVerticalTextPosition( SwingConstants.BOTTOM );
etiqueta3.setToolTipText( "Esta es la etiqueta3" );
contenedor.add( etiqueta3 );
PruebaEtiqueta
Swing
Métodos setFont y setForeground
etiqueta3 = new JLabel();
etiqueta3.setText( "Etiqueta con icono y texto en parte inferior" );
etiqueta3.setIcon( imagen );
etiqueta3.setFont(new Font("Arial", Font.BOLD, 14));
etiqueta3.setForeground(Color.black);
Se puede cambiar el tipo
de fuente, tamaño y color
Swing
JTextField y JPasswordField (Campos de texto)
•Los JTextField son áreas de una sola línea en las que el usuario
puede introducir texto mediante el teclado o bien, el programa puede
mostrar un resultado
Campo de texto en
el que el programa
muestra un
resultado
Campo de texto
en el que el
usuario ingresa
datos
Swing
JTextField y JPasswordField (Campos de texto)
•Los JPasswordField son áreas en los que el texto se representa con
simbolos * para ocultarlo de otros usuarios
JTextField
JPasswordField
Swing
JTextField (Campo de texto)
•Declarar el campo
private JTextField campoTexto1;
•Crear el campo
Se tienen varias formas
campoTexto1=new JTextField(10);
contenedor.add(campoTexto1);
Swing
JTextField (Campo de texto)
•Declarar el campo
private JTextField campoTexto1;
•Crear el campo
Se tienen varias formas
campoTexto1=new JTextField(10);
contenedor.add(campoTexto1);
Crea un campo de
texto con 10 columnas
Swing
JTextField (Campo de texto)
•Declarar el campo
private JTextField campoTexto2;
•Crear el campo
Se tienen varias formas
campoTexto2=new JTextField(“Escriba el texto aquí”);
contenedor.add(campoTexto2);
Swing
JTextField (Campo de texto)
•Declarar el campo
private JTextField campoTexto2;
•Crear el campo
Se tienen varias formas
campoTexto2=new JTextField(“Escriba el texto aquí”);
contenedor.add(campoTexto2);
Crea un campo de
texto con texto
predeterminado. El
tamaño del campo
estará dado por la
longitud del mensaje
Swing
JTextField (Campo de texto)
•Declarar el campo
private JTextField campoTexto2;
•Crear el campo
Se tienen varias formas
campoTexto2=new JTextField(“Escriba el texto aquí”,20);
contenedor.add(campoTexto2);
Cuando se crea un campo de texto con
texto predeterminado, el tamaño del
campo queda determinado por la longitud
del mensaje, si se quiere establecer un
valor diferente se puede utilizar este
constructor
Swing
JTextField (Campo de texto)
•Declarar el campo
private JTextField campoTexto3;
•Crear el campo
Se tienen varias formas
campoTexto3=new JTextField(“Campo de texto no editable”,20);
campoTexto3.setEditable(false);
contenedor.add(campoTexto3);
Swing
JTextField (Campo de texto)
•Declarar el campo
private JTextField campoTexto3;
•Crear el campo
Se tienen varias formas
campoTexto3=new JTextField(“Campo de texto no editable”,20);
campoTexto3.setEditable(false);
contenedor.add(campoTexto3);
Crea un campo de texto no
editable, es decir, no se puede
cambiar su contenido hasta que
se ejecute el comando
campoTexto3.setEditable(true);
Swing
JPasswordField
•Declarar el campo
private JPasswordField campoContraseña;
•Crear el campo
Se tienen los mismos constructores que para JTextField
campoContraseña=new JPasswordField(6);
contenedor.add(campoContraseña);
Crea un campo para
contraseña
Swing
Eventos y metáfora del oyente
Java utiliza la metáfora del oyente para indicar que cualquier GUI
está escuchando continuamente que suceda un evento
Los eventos que pueden ocurrir en una GUI son:
•Hacer clic sobre un botón
•Completar un campo de texto y hacer clic
•Hacer clic sobre una opción de un menú
•Ejecutar un comando con teclado
Swing
Eventos y metáfora del oyente
Los oyentes se han clasificado de acuerdo al componente que genera
los eventos y se tienen interfaces que ayudan a manejar tales eventos
ActionListener
MouseListener
ItemListener
KeyListener
Swing
Tipo de evento
Interfaz
ActionEvent
ActionListener
MouseEvent
MouseListener,
MouseMotionListener
KeyEvent
KeyListener
ItemEvent
ItemListener
Swing
Eventos y metáfora del oyente
Cada componente que pueda generar un evento, debe tener un
manejador que indique las acciones que deben ocurrir si se genera un
evento
Swing
JTextField y JPasswordField (Campos de texto)
•Los campos de texto, a diferencia de las etiquetas, generan eventos!!!
•Cuando se escribe en el campo de texto y se da Enter, se genera un
evento
•Concepto de FOCO: es el componente de la GUI que está actualmente
siendo utilizado, cuando un campo de texto genera un evento, se dice
que tiene el foco
Swing
Recuerde los oyentes (interfaces)
ActionListener
MouseListener
ItemListener
KeyListener
Entre estos, un campo de texto genera un evento de acción (ActionEvent)
 Utilizar un objeto manejador de una clase que implemente la interfaz
ActionListener!!!
Swing
Algunos métodos de las clases JTextField y JPasswordField
Método
Descripción
setText(mensaje)
Permite colocar un
mensaje de tipo String en
el campo
getText()
addActionListener(manejador)
Permite obtener el valor
escrito en el campo
Adicionar el manejador de
eventos al campo. El
manejador es un objeto de
una clase que implemente
la interfaz ActionListener
Swing
Para que una aplicación pueda capturar los eventos que allí se generen
debe:
-Crear la clase que implemente la interfaz
-Crear un objeto de esa clase (manejador)
-Registrar el manejador en cada componente que pueda
generar un evento del tipo considerado en la interfaz
private class ManejadorCampoTexto implements ActionListener
{
public void actionPerformed( ActionEvent evento )
{
if ( evento.getSource() == campoTexto1 )
{
//Instrucciones que se deben ejecutar si la fuente del evento fue el campoTexto1
}
} // fin del método actionPerformed
} // fin de la clase interna privada ManejadorCampoTexto
private class ManejadorCampoTexto implements ActionListener
{
public void actionPerformed( ActionEvent evento )
La clase
ManejadorCampoTexto
implementa
ActionListener
{
if ( evento.getSource() == campoTexto1 )
{
//Instrucciones que se deben ejecutar si la fuente del evento fue el campoTexto1
}
} // fin del método actionPerformed
} // fin de la clase interna privada ManejadorCampoTexto
private class ManejadorCampoTexto implements ActionListener
{
public void actionPerformed( ActionEvent evento )
{
Método que maneja un
evento ActionEvent
if ( evento.getSource() == campoTexto1 )
{
//Instrucciones que se deben ejecutar si la fuente del evento fue el campoTexto1
}
} // fin del método actionPerformed
} // fin de la clase interna privada ManejadorCampoTexto
private class ManejadorCampoTexto implements ActionListener
{
public void actionPerformed( ActionEvent evento )
{
if ( evento.getSource() == campoTexto1 )
{
Si la fuente del evento
es el campoTexto1
//Instrucciones que se deben ejecutar si la fuente del evento fue el campoTexto1
}
} // fin del método actionPerformed
} // fin de la clase interna privada ManejadorCampoTexto
private class ManejadorCampoTexto implements ActionListener
{
public void actionPerformed( ActionEvent evento )
{
if ( evento.getSource() == campoTexto1 )
{
//Instrucciones que se deben ejecutar si la fuente del evento fue el campoTexto1
}
if ( evento.getSource() == campoTexto2 )
{
//Instrucciones que se deben ejecutar si la fuente del evento fue el campoTexto2
}
} // fin del método actionPerformed
} // fin de la clase interna privada ManejadorCampoTexto
Swing
Para que una aplicación pueda capturar los eventos que allí se generen
debe:
• Crear la clase que implemente la interfaz
Se puede colocar en el mismo archivo de la GUI
• Crear un objeto de esa clase (manejador)
ManejadorCampoTexto manejador = new ManejadorCampoTexto();
• Registrar el manejador en cada componente que pueda generar un
evento del tipo considerado en la interfaz
campoTexto1.addActionListener( manejador );
campoTexto2.addActionListener( manejador );
campoTexto3.addActionListener( manejador );
campoContraseña.addActionListener( manejador );
Swing
Para que una aplicación pueda capturar los eventos que alli se generen
debe:
• Crear la clase que implemente la interfaz
Se puede colocar en el mismo archivo de la GUI
• Crear un objeto de esa clase (manejador)
ManejadorCampoTexto manejador = new ManejadorCampoTexto();
• Registrar el manejador en cada componente que pueda generar un
evento del tipo considerado en la interfaz
campoTexto1.addActionListener( manejador );
campoTexto2.addActionListener( manejador );
campoTexto3.addActionListener( manejador );
campoContraseña.addActionListener( manejador );
PruebaCampoTexto
Swing
Problema: Desarrolle un traductor EspañolInglés con dos campos de
texto, de tal forma que cuando se escriba un palabra en uno de los
campos y se de enter, aparezca la traducción en el otro campo de
texto. Se deben considerar 5 palabras.
Swing
Problema: Desarrolle una GUI con una etiqueta y un campo de texto.
El contenido inicial de la etiqueta es el número 0. Cada vez que se de
enter en el campo, se mostrará en la etiqueta la cantidad de veces
que esto ha ocurrido. Utilice tamaño 40 para el texto en la etiqueta.
Swing
Problema: Desarrolle una GUI con una etiqueta y un campo de texto.
El contenido inicial de la etiqueta es el número 0. Cada vez que se de
enter en el campo, se mostrará en la etiqueta la cantidad de veces
que esto ha ocurrido. Utilice tamaño 40 para el texto en la etiqueta.
String.valueOf( int var ) : convierte un entero a String
Swing
JButton (Botón)
•Es un componente en el que el usuario hace clic para desencadenar
cierta acción
• Un programa puede utilizar varios tipos de botones
-Botones de comando
-Casillas de verificación
-Botones interruptores
-Botones de opción
Swing
Swing
JButton (Botón)
•Declarar el botón
private JButton botonSimple;
•Crear el campo
Se tienen varias formas
botonSimple=new JButton(“Botón simple”);
contenedor.add(botonSimple);
Swing
JButton (Botón)
•Declarar el botón
private JButton botonSimple;
•Crear el campo
Se tienen varias formas
botonSimple=new JButton(“Botón simple”);
contenedor.add(botonSimple);
Botón que solo
tiene texto
Swing
JButton (Botón)
•Declarar el botón
private JButton botonSimple;
•Crear el campo
Se tienen varias formas
Icon image1 = new ImageIcon( "image6.gif" );
Icon image2 = new ImageIcon( "image7.gif" );
botonElegante = new JButton( "Botón elegante", image1 );
botonElegante.setRolloverIcon( image2 );
botonElegante.setToolTipText( "Muestra un mensaje" );
botonElegante.setMnemonic('M');
contenedor.add( botonElegante );
Swing
JButton (Botón)
•Declarar el botón
private JButton botonSimple;
•Crear el campo
Se tienen varias formas
Icon image1 = new ImageIcon( "image6.gif" );
Icon image2 = new ImageIcon( "image7.gif" );
botonElegante = new JButton( "Botón elegante", image1 );
botonElegante.setRolloverIcon( image2 );
botonElegante.setToolTipText( "Muestra un mensaje" );
botonElegante.setMnemonic('M');
contenedor.add( botonElegante );
Imagen inicial
del botón
Swing
JButton (Botón)
•Declarar el botón
private JButton botonSimple;
•Crear el campo
Se tienen varias formas
Icon image1 = new ImageIcon( "image6.gif" );
Icon image2 = new ImageIcon( "image7.gif" );
botonElegante = new JButton( "Botón elegante", image1 );
botonElegante.setRolloverIcon( image2 );
botonElegante.setToolTipText( "Muestra un mensaje" );
botonElegante.setMnemonic('M');
contenedor.add( botonElegante );
Imagen cuando se pase el
mouse por encima del
botón
Swing
JButton (Botón)
•Declarar el botón
private JButton botonSimple;
•Crear el campo
Se tienen varias formas
Icon image1 = new ImageIcon( "image6.gif" );
Icon image2 = new ImageIcon( "image7.gif" );
botonElegante = new JButton( "Botón elegante", image1 );
botonElegante.setRolloverIcon( image2 );
botonElegante.setToolTipText( "Muestra un mensaje" );
botonElegante.setMnemonic('M');
contenedor.add( botonElegante );
Un nemómico es un atajo
con teclado
Swing
Se tienen varias formas
Icon image1 = new ImageIcon( "image6.gif" );
Icon image2 = new ImageIcon( "image7.gif" );
botonElegante = new JButton( "Botón elegante", image1 );
botonElegante.setRolloverIcon( image2 );
botonElegante.setToolTipText( "Muestra un mensaje" );
botonElegante.setMnemonic('M');
contenedor.add( botonElegante );
Botón inicial
Botón cuando se pasa
el mouse por encima
Swing
JButton (Botón)
•Un botón (de comando) genera un evento ActionEvent cuando el
usuario hace clic en él
 Utilizar un objeto manejador de una clase que implemente la
interfaz ActionListener!!!
private class ManejadorBoton implements ActionListener {
// manejar evento de botón
public void actionPerformed( ActionEvent evento )
{
if (evento.getSource()==botonSimple)
JOptionPane.showMessageDialog( null, "Usted oprimió el boton simple");
if (evento.getSource()==botonElegante)
JOptionPane.showMessageDialog( null, "Usted oprimió el boton elegante");
}
} // fin de la clase interna privada ManejadorBoton
private class ManejadorBoton implements ActionListener {
// manejar evento de botón
public void actionPerformed( ActionEvent evento )
{
if (evento.getSource()==botonSimple)
JOptionPane.showMessageDialog( null, "Usted oprimió el boton simple");
if (evento.getSource()==botonElegante)
JOptionPane.showMessageDialog( null, "Usted oprimió el boton elegante");
}
} // fin de la clase interna privada ManejadorBoton
PruebaBoton
Swing
Problema: Modifique la GUI anterior de tal manera que se indique la
cantidad de veces que se ha oprimido cada botón
Swing
JButton (Botón)
•Método setEnabled()
Permite habilitar o deshabilitar un botón
nombreBoton.setEnabled(false);
Deshabilita el botón,
no ejecuta el oyente
Swing
JButton (Botón)
•Método setEnabled()
Permite habilitar o deshabilitar un botón
nombreBoton.setEnabled(false);
Deshabilita el botón,
no ejecuta el oyente
PruebaBoton2
Swing
Problema: Desarrolle una GUI que tenga dos botones. Inicialmente
uno de los dos está deshabilitado pero se puede habilitar si se hace
clic en el segundo botón. Si esto ocurre, el botón dos se deshabilita y
solo se podrá habilitar si se hace clic en el botón uno.
Swing
Problema: Desarrolle el traductor con botones. Un botón para
traducir a inglés y otro para alemán
Swing
JCheckBox (Casilla de verificación)
En un checkbox, se tienen
varias casillas, se pueden
marcar todas
Swing
JCheckBox (Casilla de verificacion)
•Un ChekBox genera un evento ItemEvent cuando el usuario hace clic
en él
Utilizar un objeto manejador de una clase que implemente la
interfaz ItemListener!!!
Swing
JChekbox (Casilla de verificación)
•Declarar
private JChekBox negrita, cursiva;
•Crear
negrita = new JCheckBox( "Negrita" );
contenedor.add( negrita );
cursiva = new JCheckBox( "Cursiva" );
contenedor.add( cursiva );
Swing
JChekbox (Casilla de verificacion)
•Declarar
private JChekBox negrita, cursiva;
•Crear
negrita = new JCheckBox( "Negrita" );
contenedor.add( negrita );
cursiva = new JCheckBox( "Cursiva" );
contenedor.add( cursiva );
ManejadorCasillaVerificacion manejador = new ManejadorCasillaVerificacion();
negrita.addItemListener( manejador );
cursiva.addItemListener( manejador );
Se adiciona el manejador, un objeto de una clase que
implementa la interfaz ItemListener, por medio del
método addItemListener
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
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
Se implementa la interfaz
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
El evento ItemEvent se
maneja por medio del
método
itemStateChanged
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
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
PruebaCasillaVerificacion
Swing
JRadioButton (Botones de opción)
En un RadioButton, solo
una de las opciones se
puede seleccionar al
tiempo
Swing
JRadioButton (Botones de opción)
•Un RadioButton genera un evento ItemEvent cuando el usuario hace
clic en él
 Utilizar un objeto manejador de una clase que implemente la
interfaz ItemListener!!!
Swing
JRadioButton (Botones de opción)
•Declarar
private JRadioButton botonSimple, botonNegrita…
private ButtonGruop grupoBotonesOpcion;
Como existe una relación entre los botones (no se
puede seleccionar más de un botón al tiempo), se
debe agrupar en un componente ButtonGroup
Después de crear cada RadioButton, se deben
adicionar a un único ButtonGroup
Swing
JRadioButton (Botones de opción)
•Crear
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 );
Swing
JRadioButton (Botones de opción)
•Crear
botonSimple = new JRadioButton( "Simple", true );
contenedor.add( botonSimple );
Se puede indicar cuál de las
opciones estará activa en el
momento de iniciar la
aplicación
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 );
Swing
JRadioButton (Botones de opción)
•Crear
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 );
ManejadorBotonOpcion manejador = new
ManejadorBotonOpcion();
botonSimple.addItemListener(manejador);
botonNegrita.addItemListener(manejador);
botonCursiva.addItemListener(manejador);
botonNegritaCursiva.addItemListener(manejador);
Se adiciona el oyente a cada
RadioButton
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 );
ManejadorBotonOpcion manejador = new
ManejadorBotonOpcion();
botonSimple.addItemListener(manejador);
botonNegrita.addItemListener(manejador);
botonCursiva.addItemListener(manejador);
botonNegritaCursiva.addItemListener(manejador);
grupoBotonesOpcion = new ButtonGroup();
grupoBotonesOpcion.add( botonSimple );
grupoBotonesOpcion.add( botonNegrita );
grupoBotonesOpcion.add( botonCursiva );
grupoBotonesOpcion.add( botonNegritaCursiva );
Se crea el ButtonGroup y se
le adicionan los RadioButton
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 );
ManejadorBotonOpcion manejador = new
ManejadorBotonOpcion();
botonSimple.addItemListener(manejador);
botonNegrita.addItemListener(manejador);
botonCursiva.addItemListener(manejador);
botonNegritaCursiva.addItemListener(manejador);
grupoBotonesOpcion = new ButtonGroup();
PruebaBotonOpcion
grupoBotonesOpcion.add( botonSimple );
Ver Oyente
grupoBotonesOpcion.add( botonNegrita );
grupoBotonesOpcion.add( botonCursiva );
grupoBotonesOpcion.add( botonNegritaCursiva );
Swing
JComboBox (Cuadro combinado)
•Un ComboBox, conocido como lista desplegable proporciona una lista
de elementos de la cual el usuario puede seleccionar solamente uno
•Los objetos ComboBox generan eventos ItemEvent cuando el usuario
hace clic en una de las opciones de la lista
 Utilizar un objeto manejador de una clase que implemente la
interfaz ItemListener!!!
Swing
JComboBox (Cuadro combinado)
•Declarar
private JComboBox cuadroCombImagenes;
private String nombres[] = { "image3.gif", "image10.gif",
"image5.gif", "image8.gif" };
Swing
JComboBox (Cuadro combinado)
•Declarar
private JComboBox cuadroCombImagenes;
private String nombres[] = { "image3.gif", "image10.gif",
"image5.gif", "image8.gif" };
Se debe crear una arreglo
con los datos que
aparecerán en la lista
Swing
JComboBox (Cuadro combinado)
•Crear
cuadroCombImagenes = new JComboBox( nombres );
cuadroCombImagenes.setMaximumRowCount(4);
Se pasa al constructor el
arreglo con los datos que
aparecerán en la lista
Swing
JComboBox (Cuadro combinado)
•Crear
cuadroCombImagenes = new JComboBox( nombres );
cuadroCombImagenes.setMaximumRowCount(4);
Se establece la cantidad
máxima de ítems que puede
tener la lista sin necesitar
la barra de desplazamiento
Swing
JComboBox (Cuadro combinado)
•Crear
cuadroCombImagenes = new JComboBox( nombres );
cuadroCombImagenes.setMaximumRowCount(2);
Aparece la barra si se
coloca el valor en 2 y hay 4
elementos en la lista
private class ManejadorCombo implements ItemListener {
public void itemStateChanged( ItemEvent evento )
{
if ( evento.getStateChange() == ItemEvent.SELECTED ){
int index=cuadroCombImagenes.getSelectedIndex();
System.out.println("Seleccionó el item " + index + " en la lista");
etiqueta.setIcon( iconos[index ] );
}
}
}
private class ManejadorCombo implements ItemListener {
public void itemStateChanged( ItemEvent evento )
{
if ( evento.getStateChange() == ItemEvent.SELECTED ){
int index=cuadroCombImagenes.getSelectedIndex();
System.out.println("Seleccionó el item " + index + " en la lista");
etiqueta.setIcon( iconos[index ] );
}
}
}
Método que permite
conocer que un ítem
cambio de estado
private class ManejadorCombo implements ItemListener {
public void itemStateChanged( ItemEvent evento )
{
if ( evento.getStateChange() == ItemEvent.SELECTED ){
int index=cuadroCombImagenes.getSelectedIndex();
System.out.println("Seleccionó el item " + index + " en la lista");
etiqueta.setIcon( iconos[index ] );
}
}
}
Método del ComboBox que
permite saber cuál de los
ítems fue seleccionado.
Retorna el índice
(comenzando en 0)
private class ManejadorCombo implements ItemListener {
public void itemStateChanged( ItemEvent evento )
{
if ( evento.getStateChange() == ItemEvent.SELECTED ){
int index=cuadroCombImagenes.getSelectedIndex();
System.out.println("Seleccionó el item " + index + " en la lista");
etiqueta.setIcon( iconos[index ] );
}
}
}
PruebaCuadroComb
Swing
JList (listas de selección)
•Una lista de selección permite al usuario seleccionar uno (Listas de
selección simple) o varios elementos de una lista (Listas de selección
múltiple)
•Las listas de selección se combinan con la clase JScrollPane
JList
JScrollPane
Swing
•Una lista de selección genera eventos ListSelectionEvent cuando el
usuario hace clic en una de las opciones de la lista
 Utilizar un objeto manejador de una clase que implemente la
interfaz ListSelectionListener!!!
 Para adicionar este escucha se debe utilizar el método
addListSelectionListener
Swing
JList (listas de selección)
•Declarar
private JList listaColores;
private JScrollPane scroll;
private final String nombresColores[] = { "Negro", "Azul", "Cyan", "Gris oscuro“,
"Gris", "Verde", "Gris claro", "Magenta", "Naranja", "Rosa", "Rojo", "Blanco", "Amarillo" };
Se debe crear un arreglo
con los datos que
aparecerán en la lista
Swing
JList (listas de selección)
•Crear
listaColores = new JList( nombresColores );
listaColores.setVisibleRowCount( 5 );
listaColores.setSelectionMode( ListSelectionModel.SINGLE_SELECTION );
scroll = new JScrollPane(listaColores);
contenedor.add(scroll);
Swing
JList (listas de selección)
•Crear
listaColores = new JList( nombresColores );
Se pasa al constructor la
lista con los nombres
listaColores.setVisibleRowCount( 5 );
listaColores.setSelectionMode( ListSelectionModel.SINGLE_SELECTION );
scroll = new JScrollPane(listaColores);
contenedor.add(scroll);
Se adiciona la lista
a un scroll
Se especifica que es una
lista de selección simple
Swing
JList (listas de selección)
•Crear
listaColores = new JList( nombresColores );
listaColores.setVisibleRowCount( 5 );
listaColores.setSelectionMode( ListSelectionModel.SINGLE_SELECTION );
scroll = new JScrollPane(listaColores);
contenedor.add(scroll);
ManejadorLista manejador = new ManejadorLista();
listaColores.addListSelectionListener(manejador);
private class ManejadorLista implements ListSelectionListener {
public void valueChanged( ListSelectionEvent evento )
{
int index=listaColores.getSelectedIndex();
contenedor.setBackground(colores[index] );
}
}
Se implementa el método
valueChange de la interfaz
ListSelectionListener
private class ManejadorLista implements ListSelectionListener {
public void valueChanged( ListSelectionEvent evento )
{
int index=listaColores.getSelectedIndex();
contenedor.setBackground(colores[index] );
}
}
PruebaLista
Swing
JList (listas de selección)
JList de selección
múltiple
JList de
selección
simple
Swing
JList (listas de selección)
•Crear
listaColores = new JList( nombresColores );
listaColores.setVisibleRowCount( 5 );
listaColores.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION );
scroll1 = new JScrollPane(listaColores);
contenedor.add(scroll1);
Se especifica que
se permite
selección múltiple
public class ManejadorMultiple implements ActionListener
{
public void actionPerformed( ActionEvent evento )
{
listaCopia.setListData( listaColores.getSelectedValues() );
}
}
Establecer los datos que
aparecerán en la lista
Retorna los valores de
listaColores seleccionados
Se captura el evento
por medio del botón
public class ManejadorMultiple implements ActionListener
{
public void actionPerformed( ActionEvent evento )
{
listaCopia.setListData( listaColores.getSelectedValues() );
}
}
PruebaSeleccionMultiple
Explicar ancho y alto de la lista que
no tiene elementos
Descargar