Está en la página 1de 11

Introducción a la Programación Orientada a Objetos

INTERFACES GRÁFICAS DE
USUARIO
INTRODUCCIÓN A LA
• Las componentes de una GUI desarrolladas en Java
PROGRAMACIÓN ORIENTADA son objetos de una clase provista por los paquetes AWT
A OBJETOS o Swing o de una clase derivada de ellas.
• Cada componente está caracterizada por distintos
01100 01100
atributos.
GUI 10011
10110
10011
10110
• Uno de los atributos es el tamaño que se mide en
Tipos de Componentes 01110
01100 pixels.
01110
01100
10011 10011
10110 10110
Dr. Luciano H. Tamargo 01110 01110
http://cs.uns.edu.ar/~lt 1001 1001
Depto. de Ciencias e Ingeniería de la Computación 1 11 1 11
Universidad Nacional del Sur, Bahía Blanca 0 0 0 0
2018 1 1
2

EL PAQUETE SWING EL PAQUETE SWING

• Los tipos de componentes pueden agruparse en: Controles básicos


– Controles básicos.
– Displays interactivos. • Son componentes simples que se usan principalmente
– Displays con información no editable. para tomar la entrada del usuario y mostrar un estado
– Contenedores. 01100 simple. 01100
10011 10011
10110 10110
01110 01110
01100 JButton JCheckBox JComboBox JList 01100
10011 10011
10110 10110
01110 01110
1001 1001
1 11 1 11
0 0 0 0
1 1
3 JSlider 4
JMenu JRadioButton

EL PAQUETE SWING EL PAQUETE SWING

Displays Interactivos Displays no editables

01100 01100
10011 10011
10110 10110
01110 JLabel JProgressBar JSeparator JToolTip 01110
01100 01100
10011 10011
10110 10110
01110 01110
1001 1001
1 11 1 11
0 0 0 0
JColorChooser JEditorPane JTextPane
1 1
5 6

Profesor Luciano H. Tamargo 1


Introducción a la Programación Orientada a Objetos

EL PAQUETE SWING EL PAQUETE SWING

Contenedores La clase JComponent


• La clase JComponent, derivada de Container, es la
clase base de Swing a partir de la cual se derivan la
01100 mayoría de las demás clases de este paquete. 01100
10011 10011
10110
• Cada clase modela un tipo de componente y tiene 10110
01110 atributos propios. 01110
JPanel 01100 01100
Container 10011
• Cada tipo de componente tiene una apariencia estándar 10011
10110 pero también puede configurarse de acuerdo a las 10110
• Toda GUI tiene al menos un objeto contenedor.
01110 pautas de diseño que se adopten, estableciendo los 0 1 1 1 0
1001 1001
• Un objeto de clase JFrame tiene un atributo de clase 1 11
valores de los atributos. 1 11
Container que es el panel de contenido del frame. 0 0 0 0
1 1
7 8

EL PAQUETE SWING EL PAQUETE SWING

La clase La clase JComponent


JComponent
• Etiquetas JLabel
• Paneles JPanel
01100 01100
10011 • Botones JButton JRadioButton JCheckBox 10011
10110 10110
01110
• Combo box JComboBox 01110
01100 • Textos JTextField JTextArea 01100
10011 10011
10110 • Diálogos JOptionPane JDialog 10110
01110 01110
1001 • Menúes JMenu 1001
1 11 1 11
0 0 0 0
1 1
9 10

ETIQUETAS PANELES

• Una etiqueta es un objeto gráfico pasivo que permite • Un panel es un área sobre la que trabaja el usuario o se
mostrar un texto o una imagen. colocan otras componentes.
• En Java podemos crear una etiqueta definiendo un objeto • Nosotros solo usaremos paneles como contenedores de
de clase JLabel.
otros paneles u otro tipo de componentes.
• Los constructores provistos por la clase permiten 01100 01100
establecer texto, imagen y/o alineación horizontal de la1 0 0 1 1 • Para definir un panel creamos un objeto de la clase 1 0 0 1 1
imagen: 10110 JPanel. 10110
01110 01110
JLabel() 01100
• JPanel() 01100
JLabel(Icon image) 10011 10011
10110 10110
JLabel(Icon image, int horAlig) 01110 01110
JLabel(String text) 1001 1001
1 11 1 11
JLabel(String text, Icon icon, int horAlig) 0 0 0 0
1 1
11 12

Profesor Luciano H. Tamargo 2


Introducción a la Programación Orientada a Objetos

BOTONES BOTONES

• Un botón es una componente reactiva, esto es, puede • Un botón se crea como una instancia de la clase
percibir la acción del usuario y reaccionar de acuerdo al JButton y se registra a un oyente para que tenga la
comportamiento establecido por el programador. capacidad de detectar y reaccionar ante un evento
• Los atributos son texto, imagen, alineación del texto y de externo.
la imagen, color, borde, letra mnemónica y forma, 0 1 1 0 0 01100
• Algunos de los constructores provistos por la clase son:
10011 10011
además, puede estar habilitado o no. 10110 10110
01110 01110
01100
JButton () 01100
10011 JButton (Icon image) 10011
10110 10110
01110 JButton (String text) 01110
1001 JButton (String text, Icon icon) 1001
1 11 1 11
0 0 0 0
1 1
13 14

EJEMPLO SELECCIONAR
EJEMPLO DOS BOTONES
BANDA CON BOTONES

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
01100 class Dos_Botones extends JFrame { 01100
10011 /*Objetos Gráficos*/ 10011
10110 10110
01110 private JLabel etiqueta; 01110
01100 private JButton botonPiojos,botonRedondos;
01100
10011 private JPanel panelControl,panelImagen;1 0 0 1 1
10110 10110
01110 01110
1001 • Todos los atributos de instancia de esta GUI
1001
1 11 corresponden a componentes gráficas. 1 11
0 0 0 0
1 1
15 16

EJEMPLO SELECCIONAR EJEMPLO SELECCIONAR


BANDA CON BOTONES BANDA CON BOTONES
public Dos_Botones() {
//Establece los valores de los atributos del frame private void armaPanelImagen(){
setLayout(new BorderLayout()); /*Crea el panel, la etiqueta, establece los
setSize(700, 320); valores de sus atributos y la inserta en el
setDefaultCloseOperation(EXIT_ON_CLOSE); panel*/
//Arma los paneles 01100 panelImagen = new JPanel(); 01100
armaPanelImagen(); 10011 etiqueta = new JLabel(); 10011
10110 10110
armaPanelBotones(); 01110 etiqueta.setIcon(new ImageIcon(piojos.jpg"));
01110
//Inserta los paneles en el panel del frame 01100 panelImagen.add(etiqueta); 01100
getContentPane().add(panelImagen,BorderLayout.CENTER); 10011 } 10011
getContentPane().add(panelControl,BorderLayout.SOUTH); 10110 10110
01110 01110
} 1001 • Los comentarios favorecen la legibilidad pero 1es
001
1 11 importante no abusar. 1 11
0 0 0 0
• Modulamos la solución para mejorar la legibilidad. 1 1
17 18

Profesor Luciano H. Tamargo 3


Introducción a la Programación Orientada a Objetos

EJEMPLO SELECCIONAR EJEMPLO SELECCIONAR


BANDA CON BOTONES BANDA CON BOTONES

private void armaPanelBotones(){ private class OyenteBotonP


/*Crea cada botón, su oyente y los vincula. implements ActionListener {
Inserta cada botón en el panel de contenido*/ public void actionPerformed(ActionEvent e) {
panelControl = new JPanel(); etiqueta.setIcon(new ImageIcon(“piojos.jpg"));
}
botonPiojos = new JButton("Los Piojos"); 0 1 1 0 0 01100
}
OyenteBotonP oyenteP = new OyenteBotonP();1 0 0 1 1 10011
10110 10110
botonPiojos.addActionListener(oyenteP); 01110 01110
private class OyenteBotonR
panelControl.add(botonPiojos); 01100 01100
10011 implements ActionListener { 10011
10110 public void actionPerformed(ActionEvent e) { 10110
botonRedondos = new JButton(“Los redondos");
01110 01110
etiqueta.setIcon(new ImageIcon(“redondos.jpg"));
OyenteBotonR oyenteR = new OyenteBotonR();1 0 0 1 } 1001
botonRedondos.addActionListener(oyenteR); 1 1 1 }
1 11
0 0 0 0
panelControl.add(botonRedondos); 1 1
} 19 20

EJEMPLO SELECCIONAR
EJEMPLO SELECCIONAR
BANDA CON BOTONES
BANDA CON BOTONES
1 oyente para 2
//Crea los botones //Crea un oyente para los dos botones
botonPiojos = new JButton("Piojos"); OyenteBoton oyente = new OyenteBoton();
botonRedondos = new JButton(“Redondos"); //Registra los oyentes
//Insertar los botones en los paneles botonPiojos.addActionListener(oyente);
panelControl.add(botonPiojos); 01100 botonRedondos.addActionListener(oyente); 01100
panelControl.add(botonRedondos); 10011 10011
10110 10110
01110 01110
01100 01100
10011 10011
10110 10110
• Las instrucciones pueden organizarse de diferente
01110 • Es posible crear un único oyente y vincularlo a los dos
01110
manera, siempre que el código tenga una 1001
estructura botones. 1001
1 11 1 11
marcada por comentarios. 0 0 0 0
1 1
21 22

EJEMPLO SELECCIONAR
BANDA CON BOTONES EJEMPLO DOS BOTONES
1 oyente para 2
//Crea un oyente para los dos botones • Definimos un solo oyente que se registra a los dos
OyenteBoton oyente = new OyenteBoton(); botones.
//Registra los oyentes • En este caso se define una sola clase para implementar la
botonPiojos.addActionListener(oyente); interface ActionListener.
botonRedondos.addActionListener(oyente); 01100
10011
• El método actionPerformed recibe como parámetro01 un 1100
0011
private class OyenteBoton 10110 objeto de clase ActionEvent. 10110
implements ActionListener{ 01110 01110
01100
• El objeto mantiene información referida a la acción del0 1 1 0 0
public void actionPerformed(ActionEvent e) 1{0 0 1 1 usuario sobre la GUI. 10011
String m; 10110
• Cuando se envía el mensaje getActionCommand al 10 01 11 11 00
m = (String)e.getActionCommand(); 01110
1001 objeto e, el resultado es el comando que corresponde 1a0la0 1
etiqueta.setIcon(new ImageIcon(m+".jpg"));
1 11 acción del usuario. 1 11
} 0 0 0 0
} 1 1
23 24

Profesor Luciano H. Tamargo 4


Introducción a la Programación Orientada a Objetos

EJEMPLO SELECCIONAR EJEMPLO SELECCIONAR


BANDA CON BOTONES BANDA CON BOTONES

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
01100 class Bandas_Botones extends JFrame { 01100
10011 /*Objetos Gráficos*/ 10011
10110 10110
01110 private JLabel etiqueta; 01110
01100 private JButton [] boton; 01100
10011 private JPanel panelControl, panelImagen; 10011
10110 10110
01110 01110
1001 1001
1 11 1 11
0 0
Definimos un arreglo de botones, cada elemento del arreglo
0 0
1 mantiene una referencia a un objeto de clase JButton. 1
25 26

EJEMPLO SELECCIONAR EJEMPLO SELECCIONAR


BANDA CON BOTONES BANDA CON BOTONES
public Bandas_Botones() { private void armaPanelBotones(){
//Establece los valores de los atributos del frame /*Todos los botones quedan registrados a un mismo
setLayout(new BorderLayout()); oyente*/
setSize(700, 320); String [] constantes =
setDefaultCloseOperation(EXIT_ON_CLOSE);
01100 {"Piojos","Redondos","Renga","Pelotas","Vela"};
01100
//Arma los paneles 10011 10011
OyenteBoton oyente = new OyenteBoton();
armaPanelBotones(); 10110 10110
armaPanelImagen(); 01110 boton = new JButton [5]; 01110
//Inserta los paneles en el panel del frame 01100 panelControl = new JPanel(); 01100
10011 //Crea cada botón y registra el oyente 10011
getContentPane().add(panelImagen,BorderLayout.CENTER);
10110 10110
getContentPane().add(panelControl,BorderLayout.SOUTH)
01110 for (int i=0;i<5;i++){ 01110
} 1001 1001
1 11 } 1 11
0 0 0 0
• Modulamos el código definiendo un método interno para
1 1que
crear cada panel, establecer sus atributos y su contenido. • Creamos un arreglo de constantes de tipo String
27 representan los rótulos de los botones. 28

EJEMPLO SELECCIONAR EJEMPLO SELECCIONAR


BANDA CON BOTONES BANDA CON BOTONES

//Crea cada botón, su oyente y lo registra private void armaPanelImagen(){


for (int i=0;i<5;i++){ /*Crea el panel, la etiqueta, establece la imagen
boton[i] = new JButton(constantes[i]); e inserta la etiqueta en el panel*/
boton[i].setPreferredSize(new panelImagen = new JPanel();
Dimension(100,30)); 01100 etiqueta = new JLabel(); 01100
boton[i].setBorder(new TitledBorder(new 1 0 0 1 1 10011
etiqueta.setIcon(new ImageIcon("piojos.jpg"));
10110 10110
LineBorder(Color.black,5,true),""));
01110 panelImagen.add(etiqueta); 01110
boton[i].addActionListener(oyente); 01100 } 01100
panelControl.add(boton[i]); 10011 10011
10110 10110
} 01110 01110
1001 1001
• El bloque iterativo crea cada botón, establece sus atributos,
1 11 1 11
0 0 0 0
lo registra al oyente y lo inserta en el panel. 1 1
• Todos los botones están registrados al mismo oyente. 29 30

Profesor Luciano H. Tamargo 5


Introducción a la Programación Orientada a Objetos

EJEMPLO SELECCIONAR
GRUPO DE BOTONES
BANDA CON BOTONES

private class OyenteBoton implements • También es posible agrupar botones de modo que solo
ActionListener { uno esté seleccionado.
public void actionPerformed(ActionEvent e) { • Cada botón es una instancia de la clase JRadioButton.
String m;
• El conjunto de botones se insertan en un objeto de clase
m = (String)e.getActionCommand(); 01100 01100
10011
ButtonGroup. 10011
etiqueta.setIcon(new ImageIcon(m+".jpg"));
}
10110 • Los atributos de instancia de la clase son: el texto, el 10110
01110 01110
} 01100
ícono y el estado. 01100
10011 10011
10110 10110
• La definición de una única clase oyente es especialmente
01110 01110
1001 1001
adecuada cuando un conjunto de botones exhiben el mismo
1 11 1 11
comportamiento. 0 0 0 0
1 1
31 32

EJEMPLO SELECCIONAR
GRUPO DE BOTONES BANDA DE UN GRUPO DE
BOTONES
• Los constructores de un objeto de clase JRadioButton
son:
JRadioButton(String s)
JRadioButton(String s, boolean b)
01100 01100
JRadioButton(Icon i) 10011 10011
10110 10110
JRadioButton(Icon i, boolean b) 01110 01110
JRadioButton(String s, Icon i) 01100 01100
10011 10011
JRadioButton(String s, Icon i, boolean b)
10110 10110
01110 01110
JRadioButton()
1001 1001
1 11 1 11
0 0 0 0
1 1
33 34

EJEMPLO SELECCIONAR EJEMPLO SELECCIONAR


BANDA DE UN GRUPO DE BANDA DE UN GRUPO DE
BOTONES BOTONES
//Declara los objetos gráficos public Bandas_Radio() {
class Bandas_Radio extends JFrame { //Establece los valores de los atributos del frame
setLayout(new GridLayout(1,2));
/*Objetos Gráficos*/
setSize(700, 320);
private JLabel etiqueta; setDefaultCloseOperation(EXIT_ON_CLOSE);
01100 01100
private ButtonGroup group; 10011 //Arma los paneles 10011
10110 10110
private JRadioButton [] boton; 01110
armaPanelBotones(); 01110
01100
private JPanel panelControl, panelImagen; armaPanelImagen(); 01100
10011 //Inserta los paneles en el panel del frame 10011
10110 getContentPane().add(panelImagen); 10110
• Cada Banda se asocia a un objeto de clase 01110 getContentPane().add(panelControl); 01110
1001 1001
JRadioButton 1 11 } 1 11
0 0 0 0
1 • La estructura del constructor no cambia 1
35 36

Profesor Luciano H. Tamargo 6


Introducción a la Programación Orientada a Objetos

EJEMPLO SELECCIONAR EJEMPLO SELECCIONAR


BANDA DE UN GRUPO DE BANDA DE UN GRUPO DE
BOTONES BOTONES
private void armaPanelBotones(){ for (int i=0;i<5;i++){
String [] constantes = boton[i] = new JRadioButton(constantes[i]);
{"Piojos","Redondos","Renga","Pelotas","Vela"};
boton[i].setPreferredSize(new
OyenteBoton oyente = new OyenteBoton();
group = new ButtonGroup(); Dimension(100,30));
01100 01100
boton = new JRadioButton [5]; 10011 boton[i].addActionListener(oyente); 10011
10110 10110
panelControl = new JPanel(); 01110 group.add(boton[i]); 01110
for (int i=0;i<5;i++){ 01100 panelControl.add(boton[i]); 01100
…} 10011 10011
10110 } 10110
boton[0].setSelected(true); 01110 01110
} 1001 1001
1 11 • Todos los botones está registrados a un mismo objeto 1 11
0 0 oyente. 0 0
• El botón activo es el piojos. 1 1
37 38

EJEMPLO SELECCIONAR EJEMPLO SELECCIONAR


BANDA DE UN GRUPO DE BANDA DE UN GRUPO DE
BOTONES BOTONES
private class OyenteBoton implements //Declara los objetos gráficos
ActionListener {
public void actionPerformed(ActionEvent e){ private ButtonGroup group;
String m; private JRadioButton piojos;
01100 01100
m = (String)e.getActionCommand(); 10011 private JRadioButton redondos; 10011
10110 10110
etiqueta.setIcon(new ImageIcon(m+".jpg"));
01110 private JRadioButton renga; 01110
} 01100 private JRadioButton pelotas; 01100
10011 10011
} 10110 private JRadioButton vela; 10110
01110 01110
• Obtiene el comando del objeto evento y usa la cadena1de
001 • En lugar del arreglo podríamos haber declarado cinco 1 0 0 1
caracteres que corresponde al nombre del archivo que1 1 1 variables 1 11
0 0 0 0
contiene la imagen de la banda seleccionada. 1 1
39 40

EJEMPLO SELECCIONAR EJEMPLO SELECCIONAR


BANDA DE UN GRUPO DE BANDA DE UN GRUPO DE
BOTONES BOTONES
//Crea el grupo y cada botón /*Crea y registra un mismo oyente a todos los
botones */
Oyente oyente = new Oyente();
group = new ButtonGroup();
piojos = new JRadioButton("piojos");
01100 piojos.addActionListener(oyente); 01100
redondos = new JRadioButton("redondos"); 1 0 0 1 1 10011
10110 redondos.addActionListener(oyente); 10110
renga = new JRadioButton("renga"); 01110 renga.addActionListener(oyente); 01110
pelotas = new JRadioButton("pelotas"); 0 1 1 0 0 pelotas.addActionListener(oyente); 01100
10011 10011
vela = new JRadioButton("vela"); 10110 vela.addActionListener(oyente); 10110
01110 01110
• El parámetro de cada constructor indica que rótulo de 1 0 0 1 • Todos los botones está registrados a un mismo objeto 1 0 0 1
1 11
cada botón y también el nombre del archivo que mantiene oyente. 1 11
0 0 0 0
la imagen de cada banda. 1 1
41 42

Profesor Luciano H. Tamargo 7


Introducción a la Programación Orientada a Objetos

EJEMPLO SELECCIONAR EJEMPLO SELECCIONAR


BANDA DE UN GRUPO DE BANDA DE UN GRUPO DE
BOTONES BOTONES
/* Agrupa los botones y activa el botón del /*Inserta los botones y la etiqueta en los
perro*/ paneles*/
radioPanel.add(piojos);
piojos.setSelected(true); radioPanel.add(redondos);
group.add(piojos); 01100 01100
10011 radioPanel.add(renga); 10011
group.add(redondos); 10110 10110
radioPanel.add(pelotas);
group.add(renga); 01110 01110
01100 radioPanel.add(vela); 01100
group.add(pelotas); 10011 10011
group.add(vela); 10110 10110
01110 01110
1001 • El orden en el que se insertan los botones es relevante.
1001
1 11 1 11
0 0 • Cada panel puede tener su propio diagramado. 0 0
1 1
43 44

EJEMPLO SELECCIONAR
CAJAS DE OPCIONES BANDAS CON CAJA DE
OPCIONES
• Una caja de opciones puede crearse como una instancia
de la clase JComboBox, editable o no editable.
• Una caja de opciones no editable consta de una lista de
valores drop-down y un botón.
01100 01100
• Una caja de opciones editable tiene además un campo 10011 10011
de texto con un pequeño botón. 10110 10110
01110 01110
• El usuario puede elegir una opción de la lista o tipear un
01100 01100
valor en el campo de texto. 10011 10011
• El constructor recibe como parámetro un arreglo de 10 01 11 11 00 10110
01110
objetos de clase String. 1001 1001
1 11 1 11
0 0 0 0
1 1
45 46

class Bandas_Combo extends JFrame { EJEMPLO SELECCIONAR


/*Objetos Gráficos*/ BANDAS CON CAJA DE
private JLabel etiqueta;
OPCIONES
private JComboBox listaBandas;
private Jpanel panelControl, panelImagen; private void armaPanelCombo(){
public Bandas_Combo() { /*Todos los botones quedan registrados a un
mismo oyente*/
/*Establece los valores de los atributos del
frame*/ String [] constantes =
{"Piojos","Redondos","Renga","Pelotas","Vela"};
setLayout(new FlowLayout()); 01100
listaBandas = new JComboBox(constantes); 1 0 0 1 1
setSize(400, 250);
setDefaultCloseOperation(EXIT_ON_CLOSE); listaBandas.setSelectedIndex(0); 10110
01110
armaPanelCombo(); 01100
armaPanelImagen(); OyenteCombo oyente = new OyenteCombo (); 10011
/*Inserta los paneles en el panel del frame */ listaBandas.addActionListener(oyente); 10110
01110
getContentPane().add(panelImagen); 1001
getContentPane().add(panelControl); panelControl = new JPanel(); 1 11
} panelControl.add(listaBandas); 0 0
} 1
…}
47 48

Profesor Luciano H. Tamargo 8


Introducción a la Programación Orientada a Objetos

EJEMPLO SELECCIONAR
BANDAS CON CAJA DE CAMPOS DE TEXTO
OPCIONES
private void armaPanelImagen(){ • Un objeto de la clase JTextField permite leer o mostrar
panelImagen = new JPanel(); un campo de texto y debe registrarse a un oyente para
etiqueta = new JLabel(); que pueda detectar y reaccionar ante un evento externo.
etiqueta.setIcon(new ImageIcon("piojos.jpg"));
• Algunos constructores provistos por la clase son:
panelImagen.add(etiqueta); 01100 01100
JTextField()
} 10011 10011
10110 JTextField(Document doc, String text, 10110
01110 01110
class OyenteCombo implements ActionListener{ 0 1 1 0 0 int col) 01100
public void actionPerformed(ActionEvent e){1 0 0 1 1 JTextField(int col) 10011
String m = 10110 JTextField(String text) 10110
(String)listaBandas.getSelectedItem(); 01 10 10 11 0 JTextField(String text, int col) 01110
1001
etiqueta.setIcon(new ImageIcon(m +".jpg"));
1 11 1 11
} 0 0 0 0
1 1
}
49 50

class Bandas_Caja extends JFrame{


EJEMPLO SELECCIONAR
/*Objetos Gráficos*/
BANDA CON CAJA DE TEXTO private JLabel etiqueta;
private JTextField cTexto;
private JPanel panelControl,panelImagen;
public Bandas_Caja() {
//Establece los valores de los atributos del
frame
01100
10011
setLayout(new FlowLayout());
10110 setSize(400, 250);
01110 setDefaultCloseOperation(EXIT_ON_CLOSE);
01100
10011
armaPanelCaja();
10110 armaPanelImagen();
01110 //Inserta los paneles en el panel del frame
1001
1 11
getContentPane().add(panelImagen);
0 0 getContentPane().add(panelControl);
1 }…
51 } 52

private void armaPanelCaja(){


EJEMPLO SELECCIONAR
/*Todos los botones quedan registrados a un mismo
BANDA CON CAJA DE TEXTO
oyente*/
cTexto = new JTextField(8); private class OyenteCaja implements
OyenteCaja oCaja = new OyenteCaja (); ActionListener {
cTexto.addActionListener(oCaja); public void actionPerformed(ActionEvent e){
panelControl = new JPanel(); String m = cTexto.getText();
01100
panelControl.add(cTexto); etiqueta.setIcon(new ImageIcon(m + ".jpg"));
10011
} 10110
cTexto.setText(""); 01110
private void armaPanelImagen(){ } 01100
10011
panelImagen = new JPanel(); } 10110
etiqueta = new JLabel(); 01110
1001
etiqueta.setIcon(new ImageIcon(“piojos.jpg")); 1 11
panelImagen.add(etiqueta); 0 0
1
}
53 54

Profesor Luciano H. Tamargo 9


Introducción a la Programación Orientada a Objetos

PANELES DE DIÁLOGOS PANELES DE DIÁLOGOS

• Un panel de diálogo se usa para leer un valor simple y/o • Todo diálogo es dependiente de un frame.
mostrar un mensaje. • Cuando un frame se destruye, también se destruyen los
• Los atributos incluyen uno o más botones. diálogos que dependen de él.
• El mensaje puede ser un error o una advertencia y puede • Un diálogo es modal cuando bloquea la entrada de datos
01100 01100
estar acompañado de una imagen o algún otro elemento.10011 del usuario a través de todas las demás ventanas. 10011
• Para definir un diálogo estandar usamos la clase 10110 • Los cuadros de diálogo creados con JOptionPane son 10110
01110 01110
JOptionPane. 01100
modales. 01100
10011 10011
10110 10110
01110 01110
1001 1001
1 11 1 11
0 0 0 0
1 1
55 56

PANELES DE DIÁLOGOS PANELES DE DIÁLOGOS

• Las clases Printing, JColorChooser y • Los atributos de un objeto de clase JOptionPane son:
JFileChooser permiten ofrecer diálogos más ícono, texto del título, texto del mensaje y texto del botón.
específicos. • Podemos utilizar un icono personalizado, no utilizar
• Para crear un diálogo a medida se usa la clase JDialog ninguno, o utilizar uno de los cuatro iconos standard de
01100 JOptionPane (question, information, warning, y error). 01100
directamente. Estos diálogos puede ser no modales. 1 0 0 1 1 10011
10110
• Los servicios provistos por JOptionPane son: 10110
01110 – showMessageDialog 01110
01100 01100
10011 – showInputDialog 10011
10110 – showConfirmDialog 10110
01110 01110
1001 – showOptionDialog 1001
1 11 1 11
0 0 0 0
1 1
57 58

PANELES DE DIÁLOGOS

• showMessageDialog Muestra un diálogo modal con un • Por qué hacemos casting?


botón, etiquetado "OK". Se puede especificar el icono y el • JButton b = (JButton) e.getSource();
texto del mensaje y del título. Por omisión el ícono es de
información.
• showConfirmDialog Muestra un diálogo modal con0 1 1 0 0 • Por qué no necesitamos hacer instanceOf? 01100
10011 10011
dos botones, etiquetados "Yes" y "No". Por omisión 1 0 1 1 0 10110
aparece el ícono question. 01110 01110
• showOptionDialog Debemos especificar el texto de01 los 1100
0011
01100
10011
botones. 10110 10110
01110 01110
• showInputDialog Muestra un diálogo modal que 1 0 0 1 1001
obtiene una cadena del usuario. La cadena puede ser 1 1 1 1 11
ingresada por el usuario en un cuadro de texto o elegida0 0 0 0
de un ComboBox no editable. Por omisión aparece el 1 1

ícono question. 59 60

Profesor Luciano H. Tamargo 10


Introducción a la Programación Orientada a Objetos

APRENDIZAJE AUTÓNOMO

• Investigue acerca de la utilidad y uso de las clases:


– JCheckBox y JTextArea
boton.addActionListener(oyente);
– Dimension
cTexto.addActionListener(oCaja); – Font
01100 01100
10011 – TitledBorder y LineBorder 10011
10110 10110
01110 – JMenu 01110
01100 • Investigue acerca de la utilidad y uso de los métodos 0 1 1 0 0
10011 10011
10110 – setPreferredSize 10110
En qué clase se define addActionListener? 01110
– setFont 01110
1001 1001
De qué clase debería ser el parámetro? 1 11 – setBorder 1 11
0 0 0 0
1 1
61 62

Profesor Luciano H. Tamargo 11

También podría gustarte