Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tema6resumido PDF
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 grficas de usuario - 2 P.O.O Tema 6 Interfaces grficas de usuario - 3
Algunos componentes de Swing Algunos componentes de Swing
P.O.O Tema 6 Interfaces grficas de usuario - 4 P.O.O Tema 6 Interfaces grficas 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
*
Eleccin entre diferentes aspectos (look & feel). Dialog JDialog
P.O.O Tema 6 Interfaces grficas de usuario - 6 P.O.O Tema 6 Interfaces grficas de usuario - 7
Jerarqua de clases para las GUI Jerarqua de clases para las GUI
Component: superclase de todas las clases de interfaz grfica. Color: color de los componentes grficos.
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 bsicos de la GUI. Categoras de clases:
JFrame: ventana que no est contenida en otras ventanas. 9 Contenedores:
JDialog: cuadro de dilogo. 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, colocndose en otros paneles 9 Componentes:
o en ventanas. Tambin sirve de lienzo. JLabel, JBbutton, JTextField, JTextArea, ...
Graphics: clase abstracta que proporciona contextos grficos 9 Clases de soporte:
donde dibujar cadenas de texto, lneas y otras formas sencillas. Graphics, Color, Font, ...
P.O.O Tema 6 Interfaces grficas de usuario - 8 P.O.O Tema 6 Interfaces grficas de usuario - 9
Jerarqua de clases para las GUI: JComponent Jerarqua 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 grficas de usuario - 10 P.O.O Tema 6 Interfaces grficas de usuario - 11
Jerarqua de componentes (repaso) Contenedores
P.O.O Tema 6 Interfaces grficas de usuario - 12 P.O.O Tema 6 Interfaces grficas de usuario - 13
Contenedores Jerarqua
P.O.O Tema 6 Interfaces grficas de usuario - 14 P.O.O Tema 6 Interfaces grficas de usuario - 15
Esquema de aplicacin en Swing Esquema de aplicacin en Swing sin herencia
P.O.O Tema 6 Interfaces grficas de usuario - 16 P.O.O Tema 6 Interfaces grficas 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. Aadimos componentes a dicho panel: public Gui01() {
panel.add(unComponente); super("Ejemplo 01 con botn");
// Configurar componentes ;
miboton = new JButton("Aceptar");
panel = getContentPane();
Modo 2: panel.add(miboton);
. . .
A partir de 1.5 tambin se puede hacer directamente sobre el Jframe setSize(200,100);
setVisible(true);
add(unComponente); setDefaultCloseOperation(EXIT_ON_CLOSE);
}
P.O.O Tema 6 Interfaces grficas de usuario - 18 P.O.O Tema 6 Interfaces grficas 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 botn"); panel = frame.getContentPane();
. . . . . .
miboton = new JButton("Aceptar"); miboton = new JButton("Aceptar");
add(miboton); Es el panel.add(miboton);
. . .
setSize(200,100);
mtodo //se aade 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 grficas de usuario - 20 P.O.O Tema 6 Interfaces grficas de usuario - 21
P.O.O Tema 6 Interfaces grficas de usuario - 22 P.O.O Tema 6 Interfaces grficas de usuario - 23
Administradores de disposicin Organizacin de contenedores
Para organizar el contenedor se utiliza el mtodo 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 ms complejas podemos insertar paneles
El layout manager elige la mejor posicin y tamao de cada (JPanel) en los contenedores y obtener el tamao de un
componente de acuerdo al espacio disponible. componente con el mtodo getSize().
P.O.O Tema 6 Interfaces grficas de usuario - 24 P.O.O Tema 6 Interfaces grficas de usuario - 25
FlowLayout BorderLayout
public class Gui02 extends JFrame { public class Gui03 extends JFrame {
P.O.O Tema 6 Interfaces grficas de usuario - 26 P.O.O Tema 6 Interfaces grficas de usuario - 27
GridLayout GridLayout
P.O.O Tema 6 Interfaces grficas de usuario - 28 P.O.O Tema 6 Interfaces grficas de usuario - 29
P.O.O Tema 6 Interfaces grficas de usuario - 30 P.O.O Tema 6 Interfaces grficas de usuario - 31
Paneles como contenedores Dibujo de grficos 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 mtodo 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 grficos.
add(new Button("Aqu la comida"),
BorderLayout.CENTER); Una vez obtenido el contexto grfico podemos llamar desde este
objeto a las funciones grficas definidas en la clase Graphics.
setSize(400, 250);
setVisible(true); Graphics contiene informacin acerca de la zona que necesita
} ser redibujada: el objeto donde dibujar, un origen de traslacin,
el color actual, la fuente actual, etctera.
/** Main method */
public static void main(String[] args) {
Gui04 frame = new Gui04();
}
}
Gui04.java
P.O.O Tema 6 Interfaces grficas de usuario - 32 P.O.O Tema 6 Interfaces grficas de usuario - 33
P.O.O Tema 6 Interfaces grficas de usuario - 34 P.O.O Tema 6 Interfaces grficas de usuario - 35
Ejemplo de dibujo Algunos mtodos de Graphics
P.O.O Tema 6 Interfaces grficas de usuario - 36 P.O.O Tema 6 Interfaces grficas de usuario - 37
Al interactuar con la aplicacin, el usuario: Cuando el usuario de un programa o applet mueve el ratn,
presiona un pulsador o pulsa una tecla, genera un evento
9 Acciona componentes (ActionEvent).
(actionEvent).
El usuario pulsa un botn.
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 identificacin del evento que indica la naturaleza
preferido (o de un men).
del evento.
Pulsa o suelta botones del ratn (MouseEvent).
9 La posicin del ratn en el momento de la interaccin.
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 maysculas, etctera.
9 Descubre porciones de ventanas (PaintEvent).
P.O.O Tema 6 Interfaces grficas de usuario - 38 P.O.O Tema 6 Interfaces grficas de usuario - 39
Acciones del usuario Ejemplo
Accin Objeto origen Tipo de evento Al pulsar el botn Copiar, se debe copiar el valor del cuadro "valor"
Pulsar un botn JButton ActionEvent en el cuadro "Copia".
Cambio del texto JTextComponent TextEvent
Pulsar Intro en un campo de texto JTextField ActionEvent
Seleccin de un nuevo elemento JCombobox ItemEvent
ActionEvent Origen del evento:
Seleccin de elemento(s) JList ListSelection- Botn Copiar
Event
Pulsar una casilla de verificacin JCheckBox ItemEvent
ActionEvent Objeto evento:
Pulsar un botn de radio JRadioButton ItemEvent ActionEvent e
ActionEvent
Seleccin de una opcin 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 grficas de usuario - 40 P.O.O Tema 6 Interfaces grficas de usuario - 41
P.O.O Tema 6 Interfaces grficas de usuario - 42 P.O.O Tema 6 Interfaces grficas de usuario - 43
Ejemplo: botn con pitido Ejemplo: reproducir un valor
P.O.O Tema 6 Interfaces grficas de usuario - 44 P.O.O Tema 6 Interfaces grficas de usuario - 45
P.O.O Tema 6 Interfaces grficas de usuario - 46 P.O.O Tema 6 Interfaces grficas 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 grficas de usuario - 48 P.O.O Tema 6 Interfaces grficas de usuario - 49
ActionEvent ActionEvent
El objeto ActionEvent ofrece un mtodo getActionCommand() El mtodo getSource() indica el objeto en el que se ha
que devuelve un objeto con la informacin sobre el origen originado el evento:
del evento (el botn en nuestro caso).
Con un botn, devuelve la etiqueta del botn. 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 botn Aceptar campo3.setText("En el botn.");
}
}
... }
P.O.O Tema 6 Interfaces grficas de usuario - 50 P.O.O Tema 6 Interfaces grficas 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 grficas de usuario - 52 P.O.O Tema 6 Interfaces grficas de usuario - 53
Para facilitar la tarea del programador se han creado una serie de JButton: Botn aislado. Puede pulsarse, pero su estado no cambia
interfaces que deben implementarse cuando se quieren procesar JToggleButton : Botn seleccionable. Cuando se pulsa el botn, su
algunos de estos eventos. Algunas interfaces y sus mtodos 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 : Especializacin de JToggleButton que implementa una
Escucha eventos de teclado keyReleased(KeyEvent) casilla de verificacin. Botn con estado interno, que cambia de
keyTyped(KeyEvent) apariencia de forma adecuada segn si est o no est seleccionado
MouseListener mouseClicked(MouseEvent) JRadioButton: Especializacin de JToggleButton que tiene sentido
Escucha eventos de accin del ratn
dentro de un mismo grupo de botones (ButtonGroup) que controla
mouseEntered(MouseEvent)
(botones) mouseExited(MouseEvent)
mousePressed(MouseEvent) que slamente uno de ellos est seleccionado
mouseReleased(MouseEvent)
MouseMotionListener mouseDragged(MouseEvent)
Escucha eventos de movimiento del ratn mouseMoved(MouseEvent)
P.O.O Tema 6 Interfaces grficas de usuario - 54 P.O.O Tema 6 Interfaces grficas de usuario - 55
Componentes : JButton Ejemplos
P.O.O Tema 6 Interfaces grficas de usuario - 56 P.O.O Tema 6 Interfaces grficas 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 grficas de usuario - 58 P.O.O Tema 6 Interfaces grficas de usuario - 59
Componentes : JComboBox Componentes : JList
P.O.O Tema 6 Interfaces grficas de usuario - 60 P.O.O Tema 6 Interfaces grficas de usuario - 61
P.O.O Tema 6 Interfaces grficas de usuario - 62 P.O.O Tema 6 Interfaces grficas de usuario - 63
Componentes: JScrollBar y JComboBox Componentes: JScrollBar y JComboBox
P.O.O Tema 6 Interfaces grficas de usuario - 64 P.O.O Tema 6 Interfaces grficas de usuario - 65
P.O.O Tema 6 Interfaces grficas de usuario - 66 P.O.O Tema 6 Interfaces grficas de usuario - 67
Pulsaciones de ratn Interaccin modal
P.O.O Tema 6 Interfaces grficas de usuario - 68 P.O.O Tema 6 Interfaces grficas de usuario - 69
P.O.O Tema 6 Interfaces grficas de usuario - 70 P.O.O Tema 6 Interfaces grficas 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("Ttulo de la ventana");
super("Ttulo 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 grficas de usuario - 72 P.O.O Tema 6 Interfaces grficas de usuario - 73
P.O.O Tema 6 Interfaces grficas de usuario - 74 P.O.O Tema 6 Interfaces grficas de usuario - 75
Mens Mens
Java ofrece varias clases para poner mens en una ventana: Una ventana (frame) slo puede tener una barra de mens
(objeto MenuBar), que se sita en la parte de arriba del mismo.
JMenuBar
JMenu
JMenuItem Los submens son botones JMenu.
JCheckBoxMenuItem
JRadioButtonMenuItem
Un JFrame o JApplet puede guardar un barra de men donde Los elementos de los mens son botones JMenuItem.
se cuelgan mens desplegables.
Los mens tienen elementos de men que puede seleccionar Cuando se activa un men se despliegan automticamente
el usuario. las opciones del men.
Las barras de mens se pueden contemplar como una estructura
que soporta mens.
P.O.O Tema 6 Interfaces grficas de usuario - 76 P.O.O Tema 6 Interfaces grficas de usuario - 77
P.O.O Tema 6 Interfaces grficas de usuario - 78 P.O.O Tema 6 Interfaces grficas de usuario - 79
Ejemplo de men Ejemplo de men
JMenuBar barraMenu = new JMenuBar(); // Establecemos oyentes para las opciones elegibles:
setJMenuBar(barraMenu); // La barra de mens de este frame listar.addActionListener(new OyenteMenu());
// El men: opcionSubmenu.addActionListener(new OyenteMenu());
JMenu menuOpciones = new JMenu("Men de opciones"); ...
barraMenu.add(menuOpciones); // Aadimos 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); // Aadimos el elemento al men String actionCommand = e.getActionCommand();
// Insercin de una lnea 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("Opcin de submen".equals(actionCommand)) {
JMenuItem opcionSubmenu = new JMenuItem("Opcin de submen"); texto.setText("Opcin de submen");
subMenu.add(opcionSubmenu); // La aadimos al submen }
// Aadimos el submen como elemento del men: }
menuOpciones.add(subMenu); }
}
Gui21.java
P.O.O Tema 6 Interfaces grficas de usuario - 80 P.O.O Tema 6 Interfaces grficas de usuario - 81
import java.awt.*;
Aplicacin que permite realizar operaciones aritmticas. import java.awt.event.*;
La interfaz contiene etiquetas y campos de texto para los import javax.swing.*;
operandos y el resultado. La operacin 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("Mens");
JMenuBar jmb = new JMenuBar();
setJMenuBar(jmb);
JMenu operationMenu = new JMenu("Operacin");
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 grficas de usuario - 82 P.O.O Tema 6 Interfaces grficas de usuario - 83
Otro ejemplo Otro ejemplo
P.O.O Tema 6 Interfaces grficas de usuario - 84 P.O.O Tema 6 Interfaces grficas de usuario - 85
Gui22.java
P.O.O Tema 6 Interfaces grficas de usuario - 86 P.O.O Tema 6 Interfaces grficas de usuario - 87
Clases adaptadoras Clases adaptadoras
P.O.O Tema 6 Interfaces grficas de usuario - 88 P.O.O Tema 6 Interfaces grficas de usuario - 89
P.O.O Tema 6 Interfaces grficas de usuario - 90 P.O.O Tema 6 Interfaces grficas de usuario - 91
Ejemplo Arquitectura MVC (Modelo-Vista-Controlador)
public class Gui17b extends JFrame { La arquitectura MVC es una arquitectura tpica de diseo de GUI.
JButton boton; List lista; Container panel;
9 El modelo representa la estructura lgica de la GUI,
public Gui17b(){
independientemente de su representacin visual.
panel =this.getContentPane();
panel=getContentPane();
9 La vista constituye la representacin visual de la GUI.
panel.setLayout(new FlowLayout()); 9 El controlador constituye la lgica de interaccin 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 grficas de usuario - 92 P.O.O Tema 6 Interfaces grficas de usuario - 93
}
AppletViewer Navegador }
P.O.O Tema 6 Interfaces grficas de usuario - 94 P.O.O Tema 6 Interfaces grficas de usuario - 95
Ejemplo
import javax.swing.*;
import java.awt.*;