Documentos de Académico
Documentos de Profesional
Documentos de Cultura
GUI Tema6resumido PDF
GUI Tema6resumido PDF
de usuario
estamos muy acostumbrados a tratar.
Las aplicaciones son conducidas por eventos y se desarrollan
haciendo uso de las clases que para ello nos ofrece la API de Java.
P.O.O Tema 6 – Interfaces gráficas de usuario - 2 P.O.O Tema 6 – Interfaces gráficas de usuario - 3
Algunos componentes de Swing Algunos componentes de Swing
P.O.O Tema 6 – Interfaces gráficas de usuario - 4 P.O.O Tema 6 – Interfaces gráficas de usuario - 5
Escrito totalmente en Java. No reemplaza a AWT. Object Color Panel Applet JApplet
Utiliza el modelo de eventos de Java 1.1. Component Container Window Frame JFrame
*
Elección entre diferentes aspectos (look & feel). Dialog JDialog
P.O.O Tema 6 – Interfaces gráficas de usuario - 6 P.O.O Tema 6 – Interfaces gráficas de usuario - 7
Jerarquía de clases para las GUI Jerarquía de clases para las GUI
Component: superclase de todas las clases de interfaz gráfica. Color: color de los componentes gráficos.
Container: para agrupar componentes. Font: aspecto de los caracteres.
JComponent: superclase de todos los componentes de Swing FontMetrics: clase abstracta para propiedades de las fuentes.
que se dibujan directamente en los lienzos (canvas).
Sus subclases son los elementos básicos de la GUI. Categorías de clases:
JFrame: ventana que no está contenida en otras ventanas. 9 Contenedores:
JDialog: cuadro de diálogo. JFrame, JApplet, JWindow, JDialog
JApplet: subclase de Applet para crear applets tipo Swing. 9 Componentes intermedios:
JPanel, JScrollPane
JPanel: contenedor invisible que mantiene componentes
de interfaz y que se puede anidar, colocándose en otros paneles 9 Componentes:
o en ventanas. También sirve de lienzo. JLabel, JBbutton, JTextField, JTextArea, ...
Graphics: clase abstracta que proporciona contextos gráficos 9 Clases de soporte:
donde dibujar cadenas de texto, líneas y otras formas sencillas. Graphics, Color, Font, ...
P.O.O Tema 6 – Interfaces gráficas de usuario - 8 P.O.O Tema 6 – Interfaces gráficas de usuario - 9
Jerarquía de clases para las GUI: JComponent Jerarquía de clases para las GUI: AWT
. JCheckBoxMenuItem
JMenuItem JMenu
AWTEvent Container Panel Applet
AbstractButton JButton JRadioButtonMenuItem
Font Button Window Frame
JToggleButton JCheckBox
FontMetrics Label Dialog FileDialog
TextField
JRadioButton
JComponent JEditorPane Object Color TextComponent
CheckBox
JLabel JList JComboBox JMenuBar JPanel JOptionPane JScrollBar JScrollPane
LayoutManager CheckBoxGroup
JTabbedPane JFileChooser
Canvas
P.O.O Tema 6 – Interfaces gráficas de usuario - 10 P.O.O Tema 6 – Interfaces gráficas de usuario - 11
Jerarquía de componentes (repaso) Contenedores
P.O.O Tema 6 – Interfaces gráficas de usuario - 12 P.O.O Tema 6 – Interfaces gráficas de usuario - 13
Contenedores Jerarquía
P.O.O Tema 6 – Interfaces gráficas de usuario - 14 P.O.O Tema 6 – Interfaces gráficas de usuario - 15
Esquema de aplicación en Swing Esquema de aplicación en Swing sin herencia
P.O.O Tema 6 – Interfaces gráficas de usuario - 16 P.O.O Tema 6 – Interfaces gráficas de usuario - 17
1. Obtenemos el panel de contenido del frame: public class Gui01 extends JFrame {
private Container panel;
Container panel = this.getContentPane(); private JButton miboton;
2. Añadimos componentes a dicho panel: public Gui01() {
panel.add(unComponente); super("Ejemplo 01 con botón");
// Configurar componentes ;
miboton = new JButton("Aceptar");
panel = getContentPane();
Modo 2: panel.add(miboton);
. . .
A partir de 1.5 también se puede hacer directamente sobre el Jframe setSize(200,100);
setVisible(true);
add(unComponente); setDefaultCloseOperation(EXIT_ON_CLOSE);
}
P.O.O Tema 6 – Interfaces gráficas de usuario - 18 P.O.O Tema 6 – Interfaces gráficas de usuario - 19
2. Con herencia de JFrame sin Container 3. Ejemplo sin herencia con Container
import javax.swing.*;
import java.awt.*; public class Gui01 {
private JButton miboton;
public class Gui01 extends JFrame { private Container panel;
private JButton miboton;
public Gui01() {
public Gui01() { Jframe frame = new JFrame(“Ejemplo 01”);
super("Ejemplo 01 con botón"); panel = frame.getContentPane();
. . . . . .
miboton = new JButton("Aceptar"); miboton = new JButton("Aceptar");
add(miboton); Es el panel.add(miboton);
. . .
setSize(200,100);
método //se añade al contentPane del frame
. . .
setVisible(true); utilizado en frame.pack();
setDefaultCloseOperation(EXIT_ON_CLOSE); los ejemplos frame.setVisible(true);
} frame.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);
}
public static void main(String args[]) { public static void main(String args[]) {
Gui01 aplicacion = new Gui01(); Gui01 aplicacion = new Gui01();
} }
} }
Gui01.java Gui01.java
P.O.O Tema 6 – Interfaces gráficas de usuario - 20 P.O.O Tema 6 – Interfaces gráficas de usuario - 21
P.O.O Tema 6 – Interfaces gráficas de usuario - 22 P.O.O Tema 6 – Interfaces gráficas de usuario - 23
Administradores de disposición Organización de contenedores
Para organizar el contenedor se utiliza el método setLayout(): BorderLayout organiza FlowLayout coloca los
public void setLayout(LayoutManager mgr) el contenedor en 5 zonas: componentes de izquierda a
derecha y de arriba hacia
abajo:
setLayout(new BorderLayout());
setLayout(new FlowLayout());
setLayout(new GridLayout(3,4));
Para distribuciones más complejas podemos insertar paneles
El layout manager elige la mejor posición y tamaño de cada (JPanel) en los contenedores y obtener el tamaño de un
componente de acuerdo al espacio disponible. componente con el método getSize().
P.O.O Tema 6 – Interfaces gráficas de usuario - 24 P.O.O Tema 6 – Interfaces gráficas de usuario - 25
FlowLayout BorderLayout
public class Gui02 extends JFrame { public class Gui03 extends JFrame {
P.O.O Tema 6 – Interfaces gráficas de usuario - 26 P.O.O Tema 6 – Interfaces gráficas de usuario - 27
GridLayout GridLayout
P.O.O Tema 6 – Interfaces gráficas de usuario - 28 P.O.O Tema 6 – Interfaces gráficas de usuario - 29
P.O.O Tema 6 – Interfaces gráficas de usuario - 30 P.O.O Tema 6 – Interfaces gráficas de usuario - 31
Paneles como contenedores Dibujo de gráficos en paneles
// Create panel p2 to hold a text field and p1 JPanel se puede usar para dibujar.
JPanel p2 = new JPanel();
p2.setLayout(new BorderLayout()); Para dibujar en un panel se crea una clase derivada de JPanel
p2.add(new JTextField("Aquí el tiempo"), y se redefine el método paintComponent() que le indica al panel
BorderLayout.NORTH); como dibujar.
p2.add(p1, BorderLayout.CENTER);
// Add p2 and a button to the frame La clase Graphics es una clase abstracta para todos
add(p2, BorderLayout.EAST); los contextos gráficos.
add(new Button("Aquí la comida"),
BorderLayout.CENTER); Una vez obtenido el contexto gráfico podemos llamar desde este
objeto a las funciones gráficas definidas en la clase Graphics.
setSize(400, 250);
setVisible(true); Graphics contiene información acerca de la zona que necesita
} ser redibujada: el objeto donde dibujar, un origen de traslación,
el color actual, la fuente actual, etcétera.
/** Main method */
public static void main(String[] args) {
Gui04 frame = new Gui04();
}
}
Gui04.java
P.O.O Tema 6 – Interfaces gráficas de usuario - 32 P.O.O Tema 6 – Interfaces gráficas de usuario - 33
P.O.O Tema 6 – Interfaces gráficas de usuario - 34 P.O.O Tema 6 – Interfaces gráficas de usuario - 35
Ejemplo de dibujo Algunos métodos de Graphics
P.O.O Tema 6 – Interfaces gráficas de usuario - 36 P.O.O Tema 6 – Interfaces gráficas de usuario - 37
Al interactuar con la aplicación, el usuario: Cuando el usuario de un programa o applet mueve el ratón,
presiona un pulsador o pulsa una tecla, genera un evento
9 Acciona componentes (ActionEvent).
(actionEvent).
El usuario pulsa un botón.
Los eventos son objetos de ciertas clases. Normalmente
El usuario termina de introducir un texto en un campo y un objeto de alguna subclase de EventObject que indica:
presiona Intro.
9 El elemento que accionó el usuario.
El usuario selecciona un elemento de una lista pulsando el
9 La identificación del evento que indica la naturaleza
preferido (o de un menú).
del evento.
Pulsa o suelta botones del ratón (MouseEvent).
9 La posición del ratón en el momento de la interacción.
9 Minimiza, cierra o manipula una ventana (WindowEvent).
9 Teclas adicionales pulsadas por el usuario, como la tecla
9 Escribe con el teclado (KeyEvent). Control, la tecla de Cambio a mayúsculas, etcétera.
9 Descubre porciones de ventanas (PaintEvent).
P.O.O Tema 6 – Interfaces gráficas de usuario - 38 P.O.O Tema 6 – Interfaces gráficas de usuario - 39
Acciones del usuario Ejemplo
Acción Objeto origen Tipo de evento Al pulsar el botón Copiar, se debe copiar el valor del cuadro "valor"
Pulsar un botón JButton ActionEvent en el cuadro "Copia".
Cambio del texto JTextComponent TextEvent
Pulsar Intro en un campo de texto JTextField ActionEvent
Selección de un nuevo elemento JCombobox ItemEvent
ActionEvent Origen del evento:
Selección de elemento(s) JList ListSelection- Botón Copiar
Event
Pulsar una casilla de verificación JCheckBox ItemEvent
ActionEvent Objeto evento:
Pulsar un botón de radio JRadioButton ItemEvent ActionEvent e
ActionEvent
Selección de una opción de menú JMenuItem ActionEvent
Mover la barra de desplazamiento JScrollBar AdjustmentEvent Objeto oyente:
Abrir, cerrar, minimizar, La ventana
maximizar o cerrar la ventana JWindow WindowEvent
...
P.O.O Tema 6 – Interfaces gráficas de usuario - 40 P.O.O Tema 6 – Interfaces gráficas de usuario - 41
P.O.O Tema 6 – Interfaces gráficas de usuario - 42 P.O.O Tema 6 – Interfaces gráficas de usuario - 43
Ejemplo: botón con pitido Ejemplo: reproducir un valor
P.O.O Tema 6 – Interfaces gráficas de usuario - 44 P.O.O Tema 6 – Interfaces gráficas de usuario - 45
P.O.O Tema 6 – Interfaces gráficas de usuario - 46 P.O.O Tema 6 – Interfaces gráficas de usuario - 47
Ejemplo: cambio de color Ejemplo: cambio de color
import javax.swing.*;
public static void main(String args[]) {
import java.awt.*;import java.awt.event.*;
Gui12 ventana = new Gui12();
public class Gui12 extends JFrame { }
JButton rojo = new JButton("Rojo");
JButton azul = new JButton("Azul"); class OyenteRojo implements ActionListener {
Container p; public void actionPerformed(ActionEvent evento) {
public Gui12() { p.setBackground(Color.red);
super("Color de fondo"); }
p = this.getContentPane(); }
setLayout(new FlowLayout()); class OyenteAzul implements ActionListener {
add(rojo); public void actionPerformed(ActionEvent evento) {
add(azul); p.setBackground(Color.green);
rojo.addActionListener(new OyenteRojo()); }
azul.addActionListener(new OyenteAzul()); }
setSize(200, 200);
setVisible(true); }
setDefaultCloseOperation(EXIT_ON_CLOSE);
} ... Gui12.java
P.O.O Tema 6 – Interfaces gráficas de usuario - 48 P.O.O Tema 6 – Interfaces gráficas de usuario - 49
ActionEvent ActionEvent
El objeto ActionEvent ofrece un método getActionCommand() El método getSource() indica el objeto en el que se ha
que devuelve un objeto con la información sobre el origen originado el evento:
del evento (el botón en nuestro caso).
Con un botón, devuelve la etiqueta del botón. public void actionPerformed(ActionEvent e) {
if(e.getSource() == lista) {
Para identificar botones individuales: campo1.setText("En la lista.");
}
else if(e.getSource() == texto) {
public void actionPerformed(ActionEvent e) { campo2.setText("En el campo de texto.");
String s = (String)e.getActionCommand(); }
if(s.equals("Aceptar")) { else if(e.getSource() == boton) {
// Tratamiento del botón Aceptar campo3.setText("En el botón.");
}
}
... }
P.O.O Tema 6 – Interfaces gráficas de usuario - 50 P.O.O Tema 6 – Interfaces gráficas de usuario - 51
Un conversor Euros-Pesetas Un conversor Euros-Pesetas
import javax.swing.*;
import java.awt.*; public static void main(String args[]) {
import java.awt.event.*;
Gui13 ventana = new Gui13();
public class Gui13 extends JFrame { }
private JTextField cantidad;
private boton1, boton2; class OyenteBoton implements ActionListener {
public Gui13(){ public void actionPerformed(ActionEvent ae) {
super("Conversor Euros-Pesetas"); Float f = new Float(cantidad.getText());
boton1 = new JButton("A euros"); float valor = f.floatValue();
boton2 = new JButton("A pesetas"); String s = (String)ae.getActionCommand();
cantidad = new TextField(10); if(s.equals("A euros")) {
JLabel eti2 = new JLabel(new ImageIcon("logo.gif")); valor = (float) (valor / 166.321);
add(eti2); add(cantidad); }
add(boton1); add(boton2); else if(s.equals("A pesetas")) {
setLayout(new FlowLayout());
boton1.addActionListener(new OyenteBoton()); valor = (float) (valor * 166.321);
boton2.addActionListener(new OyenteBoton()); }
setSize(300, 250); cantidad.setText(Float.toString(valor));
setVisible(true); }
setDefaultCloseOperation(EXIT_ON_CLOSE); } La clase OyenteBoton es interna y
} } tiene acceso a los elementos de la
... clase Contenedora Gui13.java
P.O.O Tema 6 – Interfaces gráficas de usuario - 52 P.O.O Tema 6 – Interfaces gráficas de usuario - 53
Para facilitar la tarea del programador se han creado una serie de JButton: Botón aislado. Puede pulsarse, pero su estado no cambia
interfaces que deben implementarse cuando se quieren procesar JToggleButton : Botón seleccionable. Cuando se pulsa el botón, su
algunos de estos eventos. Algunas interfaces y sus métodos son:
estado pasa a seleccionado, hasta que se pulsa de nuevo (entonces se
deselecciona)
ActionListener actionPerformed(ActionEvent)
Escucha eventos de tipo ActionEvent isSelected() permite chequear su estado
KeyListener keyPressed(KeyEvent) JCheckBox : Especialización de JToggleButton que implementa una
Escucha eventos de teclado keyReleased(KeyEvent) casilla de verificación. Botón con estado interno, que cambia de
keyTyped(KeyEvent) apariencia de forma adecuada según si está o no está seleccionado
MouseListener mouseClicked(MouseEvent) JRadioButton: Especialización de JToggleButton que tiene sentido
Escucha eventos de acción del ratón
dentro de un mismo grupo de botones (ButtonGroup) que controla
mouseEntered(MouseEvent)
(botones) mouseExited(MouseEvent)
mousePressed(MouseEvent) que sólamente uno de ellos está seleccionado
mouseReleased(MouseEvent)
MouseMotionListener mouseDragged(MouseEvent)
Escucha eventos de movimiento del ratón mouseMoved(MouseEvent)
P.O.O Tema 6 – Interfaces gráficas de usuario - 54 P.O.O Tema 6 – Interfaces gráficas de usuario - 55
Componentes : JButton Ejemplos
P.O.O Tema 6 – Interfaces gráficas de usuario - 56 P.O.O Tema 6 – Interfaces gráficas de usuario - 57
Para texto, una imagen o ambos: Campos de texto para introducir caracteres:
JLabel(String text, JTextField(int columns)
int horizontalAlignment)
JTextField(String text)
JLabel(String text)
JTextField(String text, int columns)
JLabel(Icon icon)
JTextField text1 = new JTextField("hola", 10);
JLabel(Icon icon,
int horizontalAlignment)
Poner texto: text1.setText("Adios");
Obtener texto: String str = text1.getText();
Agregar al Panel: p1.add(text1);
eti1 = new JLabel("Etiqueta de texto...");
eti2 = new JLabel(new ImageIcon("flag8.gif"));
Gui14.java
P.O.O Tema 6 – Interfaces gráficas de usuario - 58 P.O.O Tema 6 – Interfaces gráficas de usuario - 59
Componentes : JComboBox Componentes : JList
P.O.O Tema 6 – Interfaces gráficas de usuario - 60 P.O.O Tema 6 – Interfaces gráficas de usuario - 61
P.O.O Tema 6 – Interfaces gráficas de usuario - 62 P.O.O Tema 6 – Interfaces gráficas de usuario - 63
Componentes: JScrollBar y JComboBox Componentes: JScrollBar y JComboBox
P.O.O Tema 6 – Interfaces gráficas de usuario - 64 P.O.O Tema 6 – Interfaces gráficas de usuario - 65
P.O.O Tema 6 – Interfaces gráficas de usuario - 66 P.O.O Tema 6 – Interfaces gráficas de usuario - 67
Pulsaciones de ratón Interacción modal
P.O.O Tema 6 – Interfaces gráficas de usuario - 68 P.O.O Tema 6 – Interfaces gráficas de usuario - 69
P.O.O Tema 6 – Interfaces gráficas de usuario - 70 P.O.O Tema 6 – Interfaces gráficas de usuario - 71
Ejemplo de cuadro de mensaje Ejemplo de cuadro de opciones
public class Gui18 extends JFrame { public class Gui19 extends JFrame {
public Gui19() {
public Gui18() { super("Título de la ventana");
super("Título de la ventana"); p = getContentPane();
setLayout(new FlowLayout()); setLayout(new FlowLayout());
setSize(200, 100); // pack(); setSize(200, 100);
setVisible(true); // show(); setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE); setDefaultCloseOperation(EXIT_ON_CLOSE);
// if ocurre algo Object[] textoOpciones={"Si adelante","Ahora no","No
JOptionPane.showMessageDialog(null, sé"};
"Debe introducir datos en todos los campos", int opcion = JOptionPane.showOptionDialog(null,
"Error de entrada ", "¿Desea continuar?", "mensaje",
JOptionPane.ERROR_MESSAGE); JOptionPane.YES_NO_CANCEL_OPTION,
} JOptionPane.QUESTION_MESSAGE, null, textoOpciones,
public static void main(String[] args) { textoOpciones[0]);
Gui18 f = new Gui18(); }
}
} ...
Gui18.java Gui19.java
P.O.O Tema 6 – Interfaces gráficas de usuario - 72 P.O.O Tema 6 – Interfaces gráficas de usuario - 73
P.O.O Tema 6 – Interfaces gráficas de usuario - 74 P.O.O Tema 6 – Interfaces gráficas de usuario - 75
Menús Menús
Java ofrece varias clases para poner menús en una ventana: Una ventana (frame) sólo puede tener una barra de menús
(objeto MenuBar), que se sitúa en la parte de arriba del mismo.
JMenuBar
JMenu
JMenuItem Los submenús son botones JMenu.
JCheckBoxMenuItem
JRadioButtonMenuItem
Un JFrame o JApplet puede guardar un barra de menú donde Los elementos de los menús son botones JMenuItem.
se cuelgan menús desplegables.
Los menús tienen elementos de menú que puede seleccionar Cuando se activa un menú se despliegan automáticamente
el usuario. las opciones del menú.
Las barras de menús se pueden contemplar como una estructura
que soporta menús.
P.O.O Tema 6 – Interfaces gráficas de usuario - 76 P.O.O Tema 6 – Interfaces gráficas de usuario - 77
P.O.O Tema 6 – Interfaces gráficas de usuario - 78 P.O.O Tema 6 – Interfaces gráficas de usuario - 79
Ejemplo de menú Ejemplo de menú
JMenuBar barraMenu = new JMenuBar(); // Establecemos oyentes para las opciones elegibles:
setJMenuBar(barraMenu); // La barra de menús de este frame listar.addActionListener(new OyenteMenu());
// El menú: opcionSubmenu.addActionListener(new OyenteMenu());
JMenu menuOpciones = new JMenu("Menú de opciones"); ...
barraMenu.add(menuOpciones); // Añadimos el menú a la barra
// Un elemento de menú: class OyenteMenu implements ActionListener {
JMenuItem listar = new JMenuItem("Listar los alumnos"); public void actionPerformed(ActionEvent e) {
menuOpciones.add(listar); // Añadimos el elemento al menú String actionCommand = e.getActionCommand();
// Inserción de una línea separadora en el menú: if(e.getSource() instanceof JMenuItem) {
menuOpciones.add(new JSeparator()); if("Listar los alumnos".equals(actionCommand)) {
// Un menú que será un submenú del anterior: texto.setText("Listar los alumnos");
JMenu subMenu = new JMenu("Submenú"); }
// Un elemento de menú para el submenú: if("Opción de submenú".equals(actionCommand)) {
JMenuItem opcionSubmenu = new JMenuItem("Opción de submenú"); texto.setText("Opción de submenú");
subMenu.add(opcionSubmenu); // La añadimos al submenú }
// Añadimos el submenú como elemento del menú: }
menuOpciones.add(subMenu); }
}
Gui21.java
P.O.O Tema 6 – Interfaces gráficas de usuario - 80 P.O.O Tema 6 – Interfaces gráficas de usuario - 81
import java.awt.*;
Aplicación que permite realizar operaciones aritméticas. import java.awt.event.*;
La interfaz contiene etiquetas y campos de texto para los import javax.swing.*;
operandos y el resultado. La operación se selecciona en el menú:
public class Gui22 extends JFrame {
Container panel;
JTextField jtfNum1, jtfNum2, jtfResult;
JMenuItem jmiSuma, jmiResta, jmiMul, jmiDiv, jmiCerrar;
public Gui22() {
super("Menús");
JMenuBar jmb = new JMenuBar();
setJMenuBar(jmb);
JMenu operationMenu = new JMenu("Operación");
operationMenu.setMnemonic('O'); // Letra distinguida
jmb.add(operationMenu);
operationMenu.add(jmiSuma = new JMenuItem("Suma", 'S'));
operationMenu.add(jmiResta = new JMenuItem("Resta", 'R'));
operationMenu.add(jmiMul = new JMenuItem("Multiplica",'M'));
operationMenu.add(jmiDiv = new JMenuItem("Divide", 'D'));
...
P.O.O Tema 6 – Interfaces gráficas de usuario - 82 P.O.O Tema 6 – Interfaces gráficas de usuario - 83
Otro ejemplo Otro ejemplo
P.O.O Tema 6 – Interfaces gráficas de usuario - 84 P.O.O Tema 6 – Interfaces gráficas de usuario - 85
Gui22.java
P.O.O Tema 6 – Interfaces gráficas de usuario - 86 P.O.O Tema 6 – Interfaces gráficas de usuario - 87
Clases adaptadoras Clases adaptadoras
P.O.O Tema 6 – Interfaces gráficas de usuario - 88 P.O.O Tema 6 – Interfaces gráficas de usuario - 89
P.O.O Tema 6 – Interfaces gráficas de usuario - 90 P.O.O Tema 6 – Interfaces gráficas de usuario - 91
Ejemplo Arquitectura MVC (Modelo-Vista-Controlador)
public class Gui17b extends JFrame { La arquitectura MVC es una arquitectura típica de diseño de GUI.
JButton boton; List lista; Container panel;
9 El modelo representa la estructura lógica de la GUI,
public Gui17b(){
independientemente de su representación visual.
panel =this.getContentPane();
panel=getContentPane();
9 La vista constituye la representación visual de la GUI.
panel.setLayout(new FlowLayout()); 9 El controlador constituye la lógica de interacción con el usuario.
lista = new List(8,false ); El mejor modelo separa en las tres partes:
lista.setBounds(100,50,150,150);
add(lista ); public static void main(String args[]) {
this.addMouseListener(new OyenteAdaptador()); Modelo modelo = new Modelo();
setSize(100,100);setVisible(true); Controlador controlador = new Controlador(modelo);
} GUI gui = new GUI(controlador); }
class OyenteAdaptador extends MouseAdapter {
public void mouseClicked(MouseEvent e) {
lista.add("click..");
}} . . .
P.O.O Tema 6 – Interfaces gráficas de usuario - 92 P.O.O Tema 6 – Interfaces gráficas de usuario - 93
}
AppletViewer Navegador }
P.O.O Tema 6 – Interfaces gráficas de usuario - 94 P.O.O Tema 6 – Interfaces gráficas de usuario - 95
Ejemplo
import javax.swing.*;
import java.awt.*;