conos
Ventanas
Menes descolgables
Texto e imgenes organizadas en redes
Manipulacin arrastrar y soltar
Interfaces Grficas
conos
Interfaces Grficas
Una ventana es una porcin de la pantalla que sirve
como una pantalla ms pequea
Interfaces Grficas
Ventanas Solapadas
Interfaces Grficas
Men Desplegable
Interfaces Grficas
Un men es una lista de opciones alternativas
ofrecidas al usuario
Interfaces Grficas
Los 90
Interfaces Grficas
Escritorio 2D
Interfaces Grficas
Escritorio 3D
Interfaces Grficas
Interfaces Grficas
O bien
Interfaces Grficas en Java
Caso de Estudio: Cuenta Bancaria
Cuenta_Bancaria GUI_CtaBancaria
<<atributos de la clase>> cuenta : CuentaBancaria
max_descubierto: real panelAcciones, panelSaldo : JPanel
<<atributos de la instancia>> consultarSaldo,
codigo : entero botonExtraer, botonDepositar :JButton
saldo : real
<<constructor>> <<constructor>>
Cuenta_Bancaria () GUI_CtaBancaria ()
<<comandos>>
depositar (mto : real)
extraer (mto : real) : boolean
La ejecucin comienza con la
<<consultas>> creacin de una instancia de
obtenerCod () : entero
GUI_CtaBancaria
obtenerSaldo () : real
descubierto () : boolean
Interfaces Grficas en Java
Caso de Estudio: Cuenta Bancaria
Para implementar esta interfaz grfica vamos a definir una
clase que extienda a la clase JFrame provista por el
paquete grfico Swing.
import java.awt.*;
import java.awt.event.*;
import javax.swing.border.*;
import javax.swing.*;
public class GUI_CtaBancaria extends JFrame {
public GUI_CtaBancaria() {
}
}
Interfaces Grficas en Java
Caso de Estudio: Cuenta Bancaria
Cada botn de la interfaz estn asociado a un objeto
grfico que tienen la facultad de reaccionar ante
acciones producidas por el usuario.
public class GUI_CtaBancaria
extends JFrame {
private JButton botonDepositar,
botonExtraer,
consultarSaldo ;
}
Interfaces Grficas en Java
Cuenta_Bancaria GUI_CtaBancaria
Interfaces Grficas en Java
Caso de Estudio: Cuenta Bancaria
La aplicacin crea una instancia de la nueva clase.
La ejecucin comienza creando una instancia de la clase
GUI_CtaBancaria, esto es, creando un frame.
import
class TestCtaBancaria
public static void main {
(String[] args) {
GUI_CtaBancaria unaCuenta ;
unaCuenta = new GUI_CtaBancaria();
unaCuenta.setVisible(true);
}
}
Interfaces Grficas en Java
Un frame es un tipo particular de ventana sobre
la que es posible ejecutar una aplicacin
import javax.swing.*;
class PrimerEjemplo {
import javax.swing.*;
class PrimerEjemplo {
setSize(400,300)
(Dimension) establece el ancho y la altura de la
ventana.
setVisible(true)
(Component) el parmetro indica si la ventana se muestra o
no.
Interfaces Grficas en Java
import javax.swing.*;
public class SegundoEjemplo {
public static void main(String args[ ]) {
MiVentana f= new MiVentana();
f.setVisible(true);
}
}
Interfaces Grficas en Java
getContentPane().setBackground(col);
getContentPane().add(etiqueta);
Interfaces Grficas en Java
import java.awt.*;
import javax.swing.*;
class MiVentanaColor extends JFrame{
JLabel etiqueta;
public MiVentanaColor (String titulo,
Color col) { Panel de
super(titulo); contenido
setSize(400, 300);
getContentPane().setBackground(col);
import java.awt.*;
class TercerEjemplo {
public static
void main(String args[ ]) {
MiVentanaColor f1= new
MiVentanaColor(Una ventana,
Color.BLUE);
f1.setVisible(true);
getContentPane().setBackground(col);
import java.awt.*;
import javax.swing.*;
public class MiVentanaColor extends JFrame{
JLabel etiqueta;
Container panel;
public MiVentanaColor(String titulo,
Color col) {
super(titulo);
setSize(400, 300);
etiqueta =new JLabel(Panel de contenido");
panel = getContentPane();
panel.setBackground(col);
panel.add(etiqueta);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}
Interfaces Grficas en Java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GUIFondoRojoVerde extends JFrame{
}
botonRojo y botonVerde mantendrn referencias a
objetos grficos
Caso de Estudio: Fondo Rojo - Verde
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GUIFondoRojoVerde extends JFrame{
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GUIFondoRojoVerde extends JFrame{
}
Caso de Estudio: Fondo Rojo - Verde
getContentPane().add(botonRojo);
Cuando se oprima el botn Rojo la
reaccin depende del comportamiento
que establece la clase OyenteBotonR
getContentPane().add(botonRojo);
getContentPane().add(botonVerde);
}
Caso de Estudio: Fondo Rojo - Verde
getContentPane().add(botonRojo);
getContentPane().add(botonVerde);
}
Ambos botones son objetos fuente de evento y cada uno
est ligado a un objeto oyente.
Caso de Estudio: Fondo Rojo - Verde
private void hacerGUI (){
botonRojo = new JButton("Rojo");
OyenteBotonR ponerRojo = new OyenteBotonR();
botonRojo.addActionListener(ponerRojo);
}
class OyenteBotonR implements ActionListener {
public void actionPerformed( ActionEvent event) {
getContentPane().setBackground(Color.red);}
}
}
}
Caso de Estudio: Fondo Rojo - Verde
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GUIFondoRojoVerde extends JFrame
{
private JButton botonRojo, botonVerde;
public GUIFondoRojoVerde() {
setLayout(new FlowLayout());
setSize(200, 120);
setDefaultCloseOperation
(EXIT_ON_CLOSE);
hacerGUI();
}
}
Caso de Estudio: Fondo Rojo - Verde
class Test{
public static void main(String[] args) {
GUIFondoRojoVerde cuadro =
new GUIFondoRojoVerde();
cuadro.setVisible(true);
}
}
Caso de Estudio: Fondo Rojo - Verde
El paquete Swing
Cada clase de Swing modela un tipo de
componente.
controles bsicos
displays interactivos con informacin altamente
formateada
displays con informacin no editable
contenedores
Interfaces Grficas en Java
83
JApplet JFrame
JDialog
Interfaces Grficas en Java
87
JPanel
JScrollPane
JInternalFrame JLayeredPane
JRootPane
Interfaces Grficas en Java
89
La jerarqua de clases del paquete Swing
javax.swing
Class JFrame
java.lang.Object
java.awt.Component
java.awt.Container
java.awt.Window
java.awt.Frame
javax.swing.JFrame
class Test{
public static void main(String[] args) {
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public Contador() {
numero = 0;
setLayout(new FlowLayout());
setSize(200, 120);
setDefaultCloseOperation(EXIT_ON_CLOSE);
hacerGUI();
}
Caso de Estudio: Contador
94
}
Caso de Estudio: Contador
95
BorderLayout.NORTH
BorderLayout BorderLayout
BorderLayout.CENTER
.WEST .EAST
BorderLayout.SOUTH
http://download.oracle.com/javase/tutorial/uiswin
g/layout/index.html
Programacin Basada en Eventos
La construccin de una GUI utiliza un modelo de
programacin basado en eventos.
En este modelo el orden en el cual se ejecutan las
instrucciones de un programa queda determinado
por eventos.
Un evento es una seal de que algo ha ocurrido.
En esta materia consideraremos nicamente eventos
generados por acciones del usuario al interactuar
con la GUI.
Programacin Basada en Eventos
dispara un detecta el
evento evento
OBJETO interno OBJETO externo
EVENTO FUENTE
Los dos
registrado botones son
componentes
reactivas
OBJETO
El objeto oyente
OYENTE
recibe un mensaje
con el objeto evento
como parmetro OyenteBotonR ponerR
Interfaces Grficas en Java
La construccin de una GUI va a requerir
Definir clases que deriven de las clases grficas
provistas por Java.
Definir clases que implementen interfaces
grficas provistas por Java.
Crear objetos de las clases que definimos
derivando las clases de los paquetes Swing o AWT
Crear objetos de las clases provistas por el
paquete Swing o AWT
Crear objetos de las clases que implementan
interfaces
Interfaces Grficas en Java
La construccin de una GUI va a requerir
Definir clases que deriven de las clases grficas
provistas por Java.
En el ejemplo vamos a definir una clase
GUIFondoRojoVerde que extiende a JFrame.
Como todo frame, un objeto de la clase
GUIFondoRojoVerde, tendr un borde, una barra de ttulo
con tres botones y un panel de contenido.
En el panel de contenido vamos a insertar dos botones
rotulados Rojo y Verde.
Interfaces Grficas en Java
La construccin de una GUI va a requerir
Definir clases que implementen interfaces grficas
provistas por Java.
En el ejemplo definimos dos clases: OyenteBotonR
y OyenteBotonV cada una implementa a la interface
ActionListener definiendo el mtodo
actionPerfomed.
Interfaces Grficas en Java
La construccin de una GUI va a requerir
Crear objetos de las clases que implementan
interfaces
En el ejemplo creamos dos objetos oyente uno de
clase OyenteBotonR y otro OyenteBotonV
Interfaces Grficas en Java
La construccin de una GUI va a requerir
Crear objetos de las clases provistas por el paquete
Swing o AWT
En el ejemplo creamos dos objetos fuentes de
evento botonRojo y botonVerde ambos de la clase
JButton
Interfaces Grficas en Java
La estructura de las GUI que hemos estamos
definiendo consta de:
Instrucciones para importar paquetes grficos.
La definicin de una clase que crea un frame de
una clase que extiende a JFrame y lo hace visible.
La definicin de la clase que extiende a JFrame e
incluye:
Atributos asociados a componentes de la GUI y
otros vinculados a la aplicacin
Un constructor
Clases que implementan interfaces y permiten
crear oyentes
Interfaces Grficas en Java
//importar paquetes
import java.awt.*;
import javax.swing.*;
...
public class GuiFondoRojoVerde extends JFrame {
//definir atributos asociados a las componentes
// de la GUI y de la aplicacin
private JButton botonRojo,botonVerde;
getContentPane().add(botonRojo);
public GUIColorFondoPaneles(){
contenedor = getContentPane();
//layout del panel de contenido
contenedor.setLayout(new BorderLayout());
setSize(320,180);
setDefaultCloseOperation(EXIT_ON_CLOSE);
hacerGUI();
}
Se captura el panel de contenido del frame
}
Paneles
private void hacerGUI(){
//Se crean los paneles
panelColor = new JPanel();
panelBotones = new JPanel();
//Se crean los botones y los oyentes
botonRojo = new JButton("Rojo");
OyenteBotonR ponerRojo = new OyenteBotonR();
botonRojo.addActionListener(ponerRojo);
botonVerde = new JButton(Verde");
OyenteBotonV ponerVerde = new OyenteBotonV();
botonVerde.addActionListener(ponerVerde);
//Se agregan los botones al panel de botones
panelBotones.add(botonRojo);
panelBotones.add(botonVerde);
//Se agregan los paneles al panel de contenido
contenedor.add(panelColor,BorderLayout.NORTH);
contenedor.add(panelBotones,BorderLayout.SOUTH);
}
Paneles
private void hacerGUI(){
//Se crean los paneles y se establecen atributos
panelColor = new JPanel();
panelBotones = new JPanel();
panelColor.setBackground(Color.GRAY);
panelColor.setPreferredSize
(new java.awt.Dimension(300, 0));
panelBotones.setBackground(Color.WHITE);
panelBotones.setPreferredSize
(new java.awt.Dimension(300, 40));
botonRojo = new JButton("Rojo");
OyenteBotonR ponerRojo = new OyenteBotonR();
botonRojo.addActionListener(ponerRojo);
Para
} ingresar texto usamos un objeto de la clase
JTextField.
Campos de texto
private void hacerGUI(){
colorFondo=new Color(200,200,200);
}
Campos de texto
private void hacerGUI(){
panelTexto.add(cajaColor);
contenedor.add(panelTexto);
contenedor.add(panelColor);
}
Campos de texto
public class GUIColorFondoCajaTexto extends JFrame {
O bien
Caso de Estudio: Cuenta Bancaria
class Cajero
public static void main(String[] args) {
GUI_CtaBancaria unaCuenta = new GUI_CtaBancaria();
unaCuenta.setVisible(true);
}
}
Caso de Estudio: Cuenta Bancaria
import
public class GUI_CtaBancaria extends JFrame {
private CuentaBancaria cuenta;
private Container contenedor;
private JPanel panelAcciones,panelConsulta;
private JButton botonConsultar,
botonExt, botonDep;
public GUI_CtaBancaria() {
}
}
Caso de Estudio: Cuenta Bancaria
}
Caso de Estudio: Cuenta Bancaria
public void armarGUI() {
botonExt.setText("Extraer");
botonExt.setPreferredSize(new Dimension(124, 50));
botonExt.setSize(150, 50);
botonExt.setBorder(BorderFactory.createCompoundBorder(
new LineBorder(
new java.awt.Color(0, 0, 0), 1, false),null));
botonExt.addActionListener(oExtraer);
}
Caso de Estudio: Cuenta Bancaria
public void armarGUI() {
botonConsultar.setText("Consultar Saldo");
botonConsultar.setPreferredSize(new Dimension(136,
30));
botonConsultar.setSize(150, 30);
botonConsultar.setBorder
(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
botonConsultar.addActionListener(oConsultar);
}
Caso de Estudio: Cuenta Bancaria
public void armarGUI() {
// Panel de Acciones
panelAcciones.setBorder(
BorderFactory.createEtchedBorder(BevelBorder.LOWERED));
panelAcciones.setPreferredSize(
new Dimension(160, 130));
panelAcciones.setSize(160, 125);
}
Caso de Estudio: Cuenta Bancaria
public void armarGUI() {
panelAcciones.add(botonDep);
panelAcciones.add(botonExt);
panelConsulta.add(botonConsultar);
deposito = dialogo.showInputDialog
( "Ingrese la cantidad a depositar" );
if ((deposito != null) && (deposito.length() > 0)){
dep = Float.parseFloat(deposito);
dialogo.showMessageDialog(null,
"Usted deposit " + dep+ " pesos","Depsito",
JOptionPane.PLAIN_MESSAGE );
cuenta.depositar(dep);
}
}
}
Caso de Estudio: Cuenta Bancaria
private class OyenteExtraer implements ActionListener {
public void actionPerformed(ActionEvent event){
float ext;
String extraccion;
JOptionPane dialogo = new JOptionPane();
extraccion = dialogo.showInputDialog
( "Ingrese la cantidad a extraer" );
Caso de Estudio: Cuenta Bancaria
private class OyenteExtraer implements ActionListener {
public void actionPerformed(ActionEvent event){
float ext;
String extraccion;
if (cuenta.obtenerSaldo()>=0)
dialogo.showMessageDialog(null,
"Usted tiene un saldo de " + cuenta.obtenerSaldo()+
" pesos,"SALDO,JOptionPane.INFORMATION_MESSAGE );
else
dialogo.showMessageDialog(null,
"Usted est en rojo en " +
(-1)*cuenta.obtenerSaldo() + " pesos,
"SALDO", JOptionPane.ERROR_MESSAGE );
}
}
GUI y Encapsulamiento
Paneles JPanel
Etiquetas JLabel
Textos JTextField JTextArea
Botones JButton, JRadioButton
Combo box JComboBox
Dilogos JOptionPane
Interfaces Grficas en Java
La jerarqua de clases grficas
JFrame
JComponent
Interfaces Grficas en Java
La jerarqua de clases del paquete Swing
JButton
JLabel
JTextField
JTextField()
JTextField(Document doc, String text, int col)
JTextField(int col)
JTextField(String text)
JTextField(String text, int col)
Dilogos
Un dilogo es una ventana que mantiene
informacin temporaria .
En general incluye un mensaje de error o de
advertencia, pero tambin puede incluir una
imagen o un rbol de directorio. Tambin incluye
uno o ms botones.
Usaremos la clase JOptionPane para crear
cuadros de dilogo simples.
Un dilogo de la clase JOptionPanel se dice
modal.
Un dilogo modal es visible, bloquea las entradas
del usuario en todas las otras ventanas del
programa.
Dilogos
Los atributos de un objeto de clase JOptionPane son:
cono, texto del ttulo, texto del mensaje y texto del
botn
Podemos utilizar un icono personalizado, no utilizar
ninguno, o utilizar uno de los cuatro iconos standard
de JOptionPane (question, information, warning, y
error).
Los servicios provistos por JOptionPane son:
showMessageDialog
showConfirmDialog
showOptionDialog
showInputDialog
Dilogos
showMessageDialog
Muestra un dilogo modal con un botn, etiquetado "OK". Se
puede especificar el icono y el texto del mensaje y del ttulo. Por
omisin el cono es de informacin
showConfirmDialog
Muestra un dilogo modal con dos botones, etiquetados "Yes" y
"No". Por omisin aparece el cono question.
showOptionDialog
Debemos especificar el texto de los botones.
showInputDialog
Muestra un dilogo modal que obtiene una cadena del usuario.
La cadena puede ser ingresada por el usuario en un cuadro de
texto o elegida de un ComboBox no editable.
Por omisin aparece el cono question.
Radio Button
Un radio button permite que el usuario seleccione
una entre varias opciones alternativas de un grupo
de botones.
Para usar un grupo de botones creamos un objeto
de la clase JRadioButton.
La definicin de un grupo asegura que slo una de
las alternativas est seleccionada.
Radio Button
Los constructores de un objeto de clase JLabel
son:
JRadioButton(String s)
JRadioButton(String s, boolean b)
JRadioButton(Icon i)
JRadioButton(Icon i, boolean b)
JRadioButton(String s, Icon i)
JRadioButton(String s, Icon i, boolean b)
JRadioButton()
Combo box
Combo box
Combo box no
editable antes y
editable antes y
despus de hacer
despus de hacer
click sobre el
click sobre el botn.
botn.
Objetos y Eventos
JMenuItem ActionEvent
Component ComponentEvent,
MouseEvent, KeyEvent,
Objetos y Eventos
El usuario realiza una accin sobre una
componente reactiva que genera un evento
externo
Evento Evento
Externo Interno
percibe dispara
OBJETO OBJETO
FUENTE EVENTO
Component crea EventObject
Evento Evento
Externo Interno
percibe dispara
registrado a
El objeto evento es un parmetro
para el mtodo manejador del evento
Objetos y Eventos
JButton OyenteBotonRojo
botonRojo.addActionListener(ponerRojo);
cajaColor.addActionListener(cColor);
JTextField OyenteCaja
Maquina Expendedora
M111 R101
panelBotones
panelES
panelRetirar
panelEmpleado
Maquina Expendedora
botonCafe
botonRetirarInfusion
botonEmpleado
Maquina Expendedora
cartelSalida cartelBebida
Maquina Expendedora
}
Maquina Expendedora
contenedor = getContentPane();
botonCafe = new JButton() ;
botonRetirarInfusion = new JButton() ;
botonEmpleado = new JButton() ;
cartelSalida = new JLabel();
cartelBebida = new Jlabel();
panelBotones = new JPanel();
panelES = new JPanel() ;
panelRetirar = new JPanel() ;
panelEmpleado = new JPanel() ;
initGUI();
}
Maquina Expendedora
private void initGUI() {
}
Maquina Expendedora
private void initGUI() {
botonRetirarInfusion.setText
("Apriete aqu para retirar su infusin o pedir otra");
botonRetirarInfusion.setEnabled(false);
botonRetirarInfusion.setFont(new
Font("SansSerif",1,14));
botonRetirarInfusion.setBorder
(BorderFactory.createEtchedBorder(BevelBorder.LOWERED));
botonRetirarInfusion.setPreferredSize
(new Dimension(360, 32));
botonRetirarInfusion.addActionListener(oRetirar);
}
Maquina Expendedora
private void initGUI() {
botonEmpleado.setText("Empleado");
botonEmpleado.setPreferredSize(new Dimension(306, 55));
botonEmpleado.setFont(new Font("Times New Roman",0,18));
botonEmpleado.addActionListener(oEmpleado);
}
Maquina Expendedora
private void initGUI() {
panelBotonesLayout.setHgap(5);
panelBotonesLayout.setVgap(5);
panelBotones.setLayout(panelBotonesLayout);
panelBotones.setPreferredSize(new Dimension(392, 369));
panelBotones.setSize(369, 250);
panelBotones.setBackground(new Color(235,235,235));
}
Maquina Expendedora
private void initGUI() {
}
Maquina Expendedora
private void initGUI() {
cartelSalida.setLayout(new FlowLayout());
cartelSalida.setBorder (new LineBorder
(new Color(0,0,0), 1, false));
cartelSalida.setPreferredSize(new Dimension(277, 45));
cartelSalida.setHorizontalAlignment
(SwingConstants.CENTER);
cartelSalida.setHorizontalTextPosition
(SwingConstants.LEFT);
cartelSalida.setFont(new Font("Arial",0,14));
cartelBebida.setText("");
cartelBebida.setHorizontalAlignment
(SwingConstants.CENTER);
cartelBebida.setPreferredSize(new Dimension(88, 88));
}
Maquina Expendedora
private void initGUI() {
}
Maquina Expendedora
private void initGUI() {
}
Maquina Expendedora
private void initGUI() {
panelBotones.add(botonCafe);
contenedor.add(panelBotones);
panelES.add(cartelSalida);
panelES.add(cartelBebida);
contenedor.add(panelES);
panelRetirar.add(botonRetirarInfusion);
contenedor.add(panelRetirar);
panelEmpleado.add(botonEmpleado);
contenedor.add(panelEmpleado);
}
Maquina Expendedora
public class GUI_R101 extends JFrame {
public GUI_R101() {
}
private void initGUI() {
}
private void deshabilitarBotones(){
botonCafe.setEnabled(false);
botonRetirarInfusion.setEnabled(true);;
botonEmpleado.setEnabled(false);
}
}
Maquina Expendedora
public class GUI_R101 extends JFrame {
public void
actionPerformed(ActionEvent evt) {
cartelSalida.setText("");
cartelBebida.setText("");
habilitarBotones();
}
}
Maquina Expendedora
public class GUI_R101 extends JFrame {
int cafeCargado;
JOptionPane dialogo = new JOptionPane();
cafeCargado = unaMaquina.obtenerMaxCafe()-
unaMaquina.cargarCafe(unaMaquina.obtenerMaxCafe());
}
Maquina Expendedora
botonCafe
botonTe
botonCafeCarioca
Maquina Expendedora
botonCafe
botonTe
botonCafeCarioca
botonBahiano
Maquina Expendedora
botonCafe
panelBotones
cartelSalida
panelES cartelBebida
panelRetirar botonRetirarInfusion
panelEmpleado botonCafeEmpleado
botonRetirarInfusion,botonEmpleado;
}
Componentes - Canvas
La clase Canvas permite representar elementos
grficos en pantalla.
A travs de su mtodo paint(Graphics g) se realizan
todos los dibujos sobre el canvas.
Es la ocurrencia de la clase Graphics la que permite
realmente pintar elementos grficos, el canvas es el
soporte.
Graphics2D hereda de Graphics, aportando una
mayor funcionalidad. A travs de un downcasting se
puede utilizar este objeto ms refinado.
Gestin de eventos:
botonSalir.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
dispose();
System.exit(0);
}
});
JText
Gestin de eventos:
textNombre.addKeyListener(new KeyAdapter()
{
public void keyTyped(KeyEvent e)
{
if ((int)e.getKeyChar()== KeyEvent.VK_ENTER)
System.out.println(textNombre.getText());
}
});
JComboBox
Crear una lista combinada:
String datos[] = { Uno, Dos, Tres, Cuatro,
Cinco};
JComboBox lista = new JComboBox (datos);
lista.setBorder(BorderFactory.createLineBorder(Color
.red,
4));
Gestin de eventos:
lista.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.out.println(lista.getSelectedItem());
}
});
JCheckBox
Crear una casilla de verificacin:
JCheckBox ch=new JCheckBox("Estudiante", new
ImageIcon("images/off.gif"), false);
ch.setRolloverSelectedIcon(new
ImageIcon("images/over.gif"));
ch.setRolloverIcon(new ImageIcon("images/over.gif"));
ch.setSelectedIcon(new ImageIcon("images/on.gif"));
Gestin de eventos:
ch.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if(ch.isSelected())
mostrarMensaje("Check Activado");
}
});
JRadioButton
Crear una botn de opcin:
ButtonGroup grupo = new ButtonGroup();
rb1 = new JRadioButton("Hombre");
rb2 = new JRadioButton("Mujer");
rb1.setSelected(true);
rb1.setMnemonic(KeyEvent.VK_H);
rb2.setMnemonic(KeyEvent.VK_M);
grupo.add(rb1);
grupo.add(rb2);
Gestin de eventos:
rb1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if(rb1.isSelected())
mostrarMensaje("Radio Hombre
Activado");
}
});
JOptionPane
Esta clase se utiliza para crear cualquier tipo de dialogo estndar
para mostrar o recoger informacin.
Relacin (Tipo de dilogo Mtodo esttico):
Dilogo de Confirmacin (Si/No/Cancelar) showConfirmDialog
Dilogo de Entrada - showInputDialog
Dilogo de Mensaje - showMessageDialog
Dialogo Personalizable - showOptionDialog
Ejemplo:
String nombre = JOptionPane.showInputDialog(this,
"<html>Introduzca su <u>nombre</u>, por favor:</html>");
JOptionPane.showMessageDialog(this, "<html><H3>Proceso
finalizado satisfactoriamente</H3></html>");
JFileChooser
Ejemplo:
JFileChooser j = new JFileChooser();
int rtn = j.showOpenDialog(this);
if (rtn == JFileChooser.APPROVE_OPTION)
System.out.println(j.getSelectedFile().getPath());
Look & Feel
Modifica la apariencia de nuestra ventana.
Tipos:
Ejemplo:
int i=1; //Apariencia Motif
UIManager.LookAndFeelInfo looks[];
looks = UIManager.getInstalledLookAndFeels();
try
{
UIManager.setLookAndFeel(looks[i].getClassName());
SwingUtilities.updateComponentTreeUI(this);
}
catch(Exception e) {}
Metal (0) Motif (1) Windows (2) Windows Classic (3)
Look & Feel
Tambin es posible pasar como parmetro el nombre de la clase del Look &
Feel:
Metal javax.swing.plaf.metal.MetalLookAndFeel
Motif com.sun.java.swing.plaf.motif.MotifLookAndFeel
Windows com.sun.java.swing.plaf.windows.WindowsLookAndFeel
Windows Classic
com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel
Ejemplo:
try
{
UIManager.setLookAndFeel
(com.sun.java.swing.plaf.windows.WindowsLookAndFeel);
SwingUtilities.updateComponentTreeUI(this);
}catch(Exception e) {}
Mens