SlideShare uma empresa Scribd logo
1 de 69
Baixar para ler offline
Interfaces gráficas con
Swing
Java y Servicios Web I
Master en Ingeniería Matemática
Manuel Montenegro
Dpto. Sistemas Informáticos y Computación
Desp. 467 (Mat) montenegro@fdi.ucm.es
8. Interfaces gráficas con Swing28/Mayo/2012 2
Introducción
●
Swing es una biblioteca de interfaces gráficas de
usuario (GUI) para Java.
●
Viene incluida con el entorno de desarrollo de Java
(JDK).
●
Extiende a otra librería gráfica más antigua
llamada AWT.
●
Paquetes:
● javax.swing
● java.awt
● java.awt.event
●
Alternativas: SWT (http://www.eclipse.org/swt/)
8. Interfaces gráficas con Swing28/Mayo/2012 3
Contenidos
●
Ventanas
●
Componentes
●
Layout Managers
●
Manejo de eventos
●
Cuadros de diálogo predefinidos
●
Dibujo de gráficos
●
Arquitectura MVC
8. Interfaces gráficas con Swing28/Mayo/2012 4
Creación de ventanas
●
La clase JFrame proporciona operaciones para
manipular ventanas.
●
Constructores:
● JFrame()
● JFrame(String titulo)
●
Una vez creado el objeto de ventana, hay que:
●
Establecer su tamaño.
●
Establecer la acción de cierre.
●
Hacerla visible.
8. Interfaces gráficas con Swing28/Mayo/2012 5
Creación de ventanas
import javax.swing.*;
public class VentanaTest {
public static void main(String[] args) {
JFrame f = new JFrame("Titulo de ventana");
f.setSize(400, 300);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
●
Acciones de cierre:
●
JFrame.EXIT_ON_CLOSE: Abandona aplicación.
●
JFrame.DISPOSE_ON_CLOSE: Libera los recursos asociados a la ventana.
●
JFrame.DO_NOTHING_ON_CLOSE: No hace nada.
●
JFrame.HIDE_ON_CLOSE: Cierra la ventana, sin liberar sus recursos.
8. Interfaces gráficas con Swing28/Mayo/2012 6
Creación de ventanas
8. Interfaces gráficas con Swing28/Mayo/2012 7
Creación de ventanas
●
Es usual extender la clase JFrame, y realizar las
operaciones de inicialización en su constructor.
public class MiVentana extends JFrame {
public MiVentana() {
super("Titulo de ventana");
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
public class VentanaTest {
public static void main(String[] args) {
MiVentana v = new MiVentana();
v.setVisible(true);
}
}
8. Interfaces gráficas con Swing28/Mayo/2012 8
Contenidos
●
Ventanas
●
Componentes
●
Layout Managers
●
Manejo de eventos
●
Cuadros de diálogo predefinidos
●
Dibujo de gráficos
●
Arquitectura MVC
8. Interfaces gráficas con Swing28/Mayo/2012 9
Componentes de una ventana
JButton
JLabel
JTextField
JCheckBox
JRadioButton
●
Tras crear uno de estos componentes con new, ha de
añadirse al contentPane de la ventana
correspondiente mediante su método add.
8. Interfaces gráficas con Swing28/Mayo/2012 10
Añadir componentes
public class MiVentana extends JFrame {
public MiVentana() {
super("Titulo de ventana");
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container cp = getContentPane();
cp.setLayout(new FlowLayout());
JLabel etiqueta = new JLabel("Nombre: ");
JTextField texto = new JTextField(20);
JButton boton = new JButton("Saludar");
cp.add(etiqueta);
cp.add(texto);
cp.add(boton);
}
}
8. Interfaces gráficas con Swing28/Mayo/2012 11
Añadir componentes
8. Interfaces gráficas con Swing28/Mayo/2012 12
Contenidos
●
Ventanas
●
Componentes
●
Layout Managers
●
Manejo de eventos
●
Cuadros de diálogo predefinidos
●
Dibujo de gráficos
●
Arquitectura MVC
8. Interfaces gráficas con Swing28/Mayo/2012 13
Layout Managers
●
En Java no es habitual indicar explícitamente la posición
de los componentes de la interfaz dentro de la ventana.
●
Los layout managers se encargan de colocar los
componentes de la interfaz de usuario en la ventana
contenedora.
●
Especifican la posición y el tamaño de dichos
componentes.
● FlowLayout
● GridLayout
● BorderLayout
● GridBagLayout
● …
8. Interfaces gráficas con Swing28/Mayo/2012 14
FlowLayout
●
Coloca los elementos uno a continuación de otro,
de manera similar a la colocación de palabras en
un procesador de textos.
●
Métodos:
● setAligment(int alineacion)
● setHgap(int separacion)
● setVgap(int separacion)
8. Interfaces gráficas con Swing28/Mayo/2012 15
GridLayout
●
Coloca los componentes de la interfaz en
forma de rejilla.
●
El orden en que se añadan los componentes
determina su posición en la rejilla.
●
Constructor:
● GridLayout(int filas, int columnas)
●
Métodos:
● setHgap(int separacion)
● setVgap(int separacion)
8. Interfaces gráficas con Swing28/Mayo/2012 16
GridLayout
public class MiVentana2 extends JFrame {
public MiVentana2() {
super("Titulo de ventana");
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container cp = getContentPane();
GridLayout gl = new GridLayout(4,3);
gl.setHgap(5); gl.setVgap(5);
cp.setLayout(gl);
for(int i = 1; i <= 9; i++) {
cp.add(new JButton(String.valueOf(i)));
}
cp.add(new JButton("*"));
cp.add(new JButton("0"));
cp.add(new JButton("#"));
}
}
8. Interfaces gráficas con Swing28/Mayo/2012 17
GridLayout
8. Interfaces gráficas con Swing28/Mayo/2012 18
BorderLayout
●
Coloca y cambia de tamaño sus componentes
para que se ajusten a los bordes y parte
central de la ventana.
●
Métodos:
● setHgap(int separacion)
● setVgap(int separacion)
●
Al añadir un elemento a la
ventana, hay que especificar
su colocación:
JButton b = new JButton(...);
getContentPane().add(b, BorderLayout.EAST)
8. Interfaces gráficas con Swing28/Mayo/2012 19
Interfaces complejas: JPanel
●
Un panel es un componente con un layout
manager propio, y que puede contener varios
componentes en su interior.
●
Constructor:
● JPanel()
●
Métodos:
● void setLayout(LayoutManager lm)
● void add(JComponent componente)
● …
8. Interfaces gráficas con Swing28/Mayo/2012 20
Interfaces complejas: JPanel
8. Interfaces gráficas con Swing28/Mayo/2012 21
Interfaces complejas: JPanel
GridLayout
FlowLayout
FlowLayout
8. Interfaces gráficas con Swing28/Mayo/2012 22
Interfaces complejas: JPanel
public MiVentana3() {
super("Añadir usuario");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Panel de fecha
JPanel panelFecha = new JPanel();
panelFecha.setLayout(new FlowLayout());
panelFecha.add(new JTextField(2));
panelFecha.add(new JLabel("/"));
panelFecha.add(new JTextField(2));
panelFecha.add(new JLabel("/"));
panelFecha.add(new JTextField(2));
// Panel de datos
JPanel panelDatos = new JPanel();
GridLayout gl = new GridLayout(3,2,0,5);
panelDatos.setLayout(gl);
panelDatos.add(new JLabel("Nombre:"));
panelDatos.add(new JTextField(10));
panelDatos.add(new JLabel("DNI:"));
panelDatos.add(new JTextField(10));
panelDatos.add(new JLabel("Fecha de nacimiento: "));
panelDatos.add(panelFecha);
…
8. Interfaces gráficas con Swing28/Mayo/2012 23
Interfaces complejas: JPanel
…
// Panel de botones
JPanel panelBotones = new JPanel();
panelBotones.setLayout(new FlowLayout());
panelBotones.add(new JButton("Aceptar"));
panelBotones.add(new JButton("Cancelar"));
Container cp = getContentPane();
cp.add(panelDatos, BorderLayout.CENTER);
cp.add(panelBotones, BorderLayout.SOUTH);
}
8. Interfaces gráficas con Swing28/Mayo/2012 24
Interfaces complejas: GridBagLayout
●
Más flexible que GridLayout
●
Cada componente ha de tener asociado un
objeto de la clase GridBagConstraints. La
asociación se producirá en el método add.
JButton b = new JButton(“Aceptar”);
GridBagConstraints gbc = new GridBagConstraints(...);
getContentPane().add(b, gbc);
8. Interfaces gráficas con Swing28/Mayo/2012 25
GridBagConstraints
●
Atributos públicos:
● int gridx, gridy
● int gridwidth, gridheight
● double weightx, weighty
● int fill
● int anchor
● Insets insets
● int ipadx, ipady
●
Pueden ser inicializados en el constructor.
8. Interfaces gráficas con Swing28/Mayo/2012 26
GridBagConstraints
●
Atributos públicos:
● int gridx, gridy
8. Interfaces gráficas con Swing28/Mayo/2012 27
GridBagConstraints
●
Atributos públicos:
● int gridwidth, gridheight
gridheight = 2
gridwidth = 2
8. Interfaces gráficas con Swing28/Mayo/2012 28
GridBagConstraints
●
Atributos públicos:
● double weightx, weighty
weightx = 1.0 weightx = 0.0
8. Interfaces gráficas con Swing28/Mayo/2012 29
GridBagConstraints
●
Atributos públicos:
● int fill
●
Puede ser:
● GridBagLayout.HORIZONTAL
● GridBagLayout.VERTICAL
● GridBagLayout.BOTH
8. Interfaces gráficas con Swing28/Mayo/2012 30
GridBagConstraints
●
Atributos públicos:
● int anchor
8. Interfaces gráficas con Swing28/Mayo/2012 31
GridBagConstraints
●
Atributos públicos:
● Insets insets
insets = new Insets(10, 20, 10, 20)
8. Interfaces gráficas con Swing28/Mayo/2012 32
GridBagConstraints
●
Atributos públicos:
● int padx, int pady
●
Especifican cuánto espacio añadir a la
anchura/altura mínima de los componentes.
8. Interfaces gráficas con Swing28/Mayo/2012 33
Constructores de interfaces
●
Permiten construir interfaces de usuario
interactivamente.
●
Ejemplo: Netbeans (netbeans.org)
8. Interfaces gráficas con Swing28/Mayo/2012 34
Contenidos
●
Ventanas
●
Componentes
●
Layout Managers
●
Manejo de eventos
●
Cuadros de diálogo predefinidos
●
Dibujo de gráficos
●
Arquitectura MVC
8. Interfaces gráficas con Swing28/Mayo/2012 35
Manejo de eventos
●
Un evento es un suceso que ocurre como
consecuencia de la interacción del usuario con
la interfaz gráfica.
●
Pulsación de un botón.
●
Cambio del contenido en un cuadro de texto.
●
Deslizamiento de una barra.
●
Activación de un JCheckBox.
●
Movimiento de la ventana.
8. Interfaces gráficas con Swing28/Mayo/2012 36
Pulsación de un botón
●
La clase JButton tiene un método:
● void addActionListener(ActionListener l)
●
Que especifica el objeto (manejador de
evento) que se encargará de tratar el evento
de pulsación del botón.
●
Este objeto ha de interpretar la interfaz
ActionListener (paquete java.awt.event)
public interface ActionListener {
void actionPerformed(ActionEvent e)
}
8. Interfaces gráficas con Swing28/Mayo/2012 37
Pulsación de un botón
●
Cuando el usuario pulse el botón, se llamará al
método actionPerformed de todos los
manejadores de eventos que se hayan
registrado.
●
Métodos de ActionEvent:
● public Object getSource()
● public int getModifiers()
public class Manejador implements ActionListener {
public void actionPerformed(ActionEvent e) {
...
}
}
Información sobre
el evento
8. Interfaces gráficas con Swing28/Mayo/2012 38
Ejemplo
public class BotonVentana extends JFrame {
public BotonVentana() {
super("Botón");
setSize(200,100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container cp = getContentPane();
cp.setLayout(new FlowLayout());
JButton boton = new JButton("¡Púlsame!");
boton.addActionListener(new EventoBotonPulsado());
cp.add(boton);
}
}
8. Interfaces gráficas con Swing28/Mayo/2012 39
Ejemplo
public class EventoBotonPulsado implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.out.println(“¡Gracias!”);
}
}
8. Interfaces gráficas con Swing28/Mayo/2012 40
Ejemplo
public class EventoBotonPulsado implements ActionListener {
public void actionPerformed(ActionEvent e) {
JButton boton = (JButton) e.getSource();
boton.setText("¡Gracias!");
}
}
8. Interfaces gráficas con Swing28/Mayo/2012 41
Acceso a componentes de la interfaz
8. Interfaces gráficas con Swing28/Mayo/2012 42
Acceso a componentes de la interfaz
public class EventoSaludo implements ActionListener {
public void actionPerformed(ActionEvent e) {
}
}
?
●
¿Cómo accedo al objeto JTextField?
8. Interfaces gráficas con Swing28/Mayo/2012 43
Posibilidad 1
public class EventoSaludo implements ActionListener {
private JTextField cuadroTexto;
public EventoSaludo(JTextField cuadroTexto) {
this.cuadroTexto = cuadroTexto;
}
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "¡Hola, " +
cuadroTexto.getText() + "!");
}
}
8. Interfaces gráficas con Swing28/Mayo/2012 44
Posibilidad 1
public class MiVentana extends JFrame {
public MiVentana() {
super("Titulo de ventana");
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new FlowLayout());
Container cp = getContentPane();
cp.add(new JLabel("Nombre :"));
JTextField texto = new JTextField(20);
cp.add(texto);
JButton botonSaludo = new JButton("Saludar");
cp.add(botonSaludo);
botonSaludo.addActionListener(new EventoSaludo(texto));
}
}
8. Interfaces gráficas con Swing28/Mayo/2012 45
Posibilidad 2
public class MiVentana extends JFrame {
private JTextField cuadroTexto;
class EventoSaludo implements ActionListener {
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "¡Hola, " +
cuadroTexto.getText() + "!");
}
}
public MiVentana() {
…
cuadroTexto = new JTextField(20);
cp.add(cuadroTexto);
…
botonSaludo.addActionListener(new EventoSaludo());
}
}
8. Interfaces gráficas con Swing28/Mayo/2012 46
Posibilidad 3
public class MiVentana extends JFrame implements ActionListener {
private JTextField cuadroTexto;
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "¡Hola, " +
cuadroTexto.getText() + "!");
}
public MiVentana() {
…
cuadroTexto = new JTextField(20);
cp.add(cuadroTexto);
…
botonSaludo.addActionListener(this);
}
}
8. Interfaces gráficas con Swing28/Mayo/2012 47
Eventos en un JTextField
●
CaretListener: Cambios en la posición del
cursor.
● void caretUpdate(CaretEvent e)
●
DocumentListener: Cambios en el texto.
● void changedUpdate(DocumentEvent e)
● void insertUpdate(DocumentEvent e)
● void removeUpdate(DocumentEvent e)
JTextField text = ...;
text.addCaretListener(...);
text.getDocument().addDocumentListener(...);
8. Interfaces gráficas con Swing28/Mayo/2012 48
Eventos en una ventana
● WindowListener
● void windowActivated(WindowEvent e)
● void windowClosed(WindowEvent e)
● void windowClosing(WindowEvent e)
● void windowDeactivated(WindowEvent e)
● void windowDeiconified(WindowEvent e)
● void windowIconified(WindowEvent e)
● void windowOpened(WindowEvent e)
8. Interfaces gráficas con Swing28/Mayo/2012 49
Eventos de ratón y de teclado
●
MouseListener: Pulsaciones de botón, entradas
y salidas del puntero en un componente.
●
MouseMotionListener: Movimientos del ratón
dentro de un componente.
●
MouseWheelListener: Movimientos de la rueda
central de un ratón.
●
KeyListener: Pulsaciones de teclas.
8. Interfaces gráficas con Swing28/Mayo/2012 50
Contenidos
●
Ventanas
●
Componentes
●
Layout Managers
●
Manejo de eventos
●
Cuadros de diálogo predefinidos
●
Dibujo de gráficos
●
Arquitectura MVC
8. Interfaces gráficas con Swing28/Mayo/2012 51
Cuadros de diálogo predefinidos
●
La clase JOptionPane proporciona métodos de
utilidad para mostrar ventanas de aviso y de
confirmación estándar.
● void showMessageDialog(Component padre,
Object mensaje, String tituloVentana,
int tipoMensaje)
8. Interfaces gráficas con Swing28/Mayo/2012 52
Cuadros de diálogo predefinidos
●
La clase JOptionPane proporciona métodos de
utilidad para mostrar ventanas de aviso y de
confirmación estándar.
● String showInputDialog(Component padre,
Object mensaje, Object valorDefecto)
8. Interfaces gráficas con Swing28/Mayo/2012 53
Cuadros de diálogo predefinidos
●
La clase JOptionPane proporciona métodos de
utilidad para mostrar ventanas de aviso y de
confirmación estándar.
● int showConfirmDialog(Component padre,
Object mensaje, String titulo,
int tipoOpciones, int tipoMensaje)
8. Interfaces gráficas con Swing28/Mayo/2012 54
Contenidos
●
Ventanas
●
Componentes
●
Layout Managers
●
Manejo de eventos
●
Cuadros de diálogo predefinidos
●
Dibujo de gráficos
●
Arquitectura MVC
8. Interfaces gráficas con Swing28/Mayo/2012 55
Dibujar gráficos
●
Cada componente tiene un método llamado
paintComponent, que se encarga de pintarlo en
pantalla.
●
Para realizar un dibujo definido por el
programador, basta con heredar de un
componente (normalmente un JPanel), y
sobreescribir su método paintComponent.
● void paintComponent(Graphics g)
8. Interfaces gráficas con Swing28/Mayo/2012 56
Dibujar gráficos
●
Métodos de Graphics:
● void drawPolygon(int[] x, int[] y, int puntos)
● void drawRect(int x, int y,
int ancho, int alto)
● void fillRect(int x, int y,
int ancho, int alto)
● void drawOval(int x, int y,
int ancho, int alto)
● void fillOval(int x, int y,
int ancho, int alto)
● void drawString(String cad, int x, int y)
● void setColor(Color c)
● void setFont(Font f)
8. Interfaces gráficas con Swing28/Mayo/2012 57
Ejemplo
public class PanelSol extends JPanel {
public void paintComponent(Graphics g) {
g.setColor(Color.ORANGE);
g.fillOval(100,100,200,200);
for (double d = 0; d < 2*Math.PI; d += 0.1) {
int xEnd = (int) (200+150*Math.cos(d));
int yEnd = (int) (200+150*Math.sin(d));
g.drawLine(200, 200, xEnd, yEnd);
}
g.setColor(Color.BLACK);
g.drawArc(150, 150, 100, 100, 230, 80);
g.fillOval(150, 150, 20, 20);
g.fillOval(230, 150, 20, 20);
}
}
8. Interfaces gráficas con Swing28/Mayo/2012 58
Ejemplo
public class VentanaSol extends JFrame {
public VentanaSol() {
…
Container cp = getContentPane();
cp.add(new PanelSol());
}
}
8. Interfaces gráficas con Swing28/Mayo/2012 59
Aún hay más
http://download.java.net/javadesktop/swingset3/SwingSet3.jnlp
8. Interfaces gráficas con Swing28/Mayo/2012 60
Aún hay más
http://www.particle.kth.se/~fmi/kurs/PhysicsSimulation/Lectures/07A/swingDesign.html
8. Interfaces gráficas con Swing28/Mayo/2012 61
Contenidos
●
Ventanas
●
Componentes
●
Layout Managers
●
Manejo de eventos
●
Cuadros de diálogo predefinidos
●
Dibujo de gráficos
●
Arquitectura MVC
8. Interfaces gráficas con Swing28/Mayo/2012 62
Arquitectura MVC
●
MVC = Modelo – Vista – Controlador
●
Es un patrón de diseño que separa los datos de
la aplicación, la interfaz de usuario, y la lógica
de negocio.
ModeloVista Modelo
Controlador
8. Interfaces gráficas con Swing28/Mayo/2012 63
Arquitectura MVC
●
Ejemplo: Edición de textos.
ModeloVista Modelo
Controlador
“Mi Texto”
interfaz Documentclass JTextField
class JTextField
8. Interfaces gráficas con Swing28/Mayo/2012 64
Arquitectura MVC
●
Ejemplo: Listas
ModeloVista Modelo
Controlador
{“MetaSystems”, Color.RED},
{“MetaWorks”, Color.BLUE},
…
interfaz ListModelclass JList
8. Interfaces gráficas con Swing28/Mayo/2012 65
Arquitectura MVC
●
Preparación: El modelo tiene una lista de vistas. Cada
vez que haya un cambio de modelo, éste avisará a
todas las vistas para que se actualicen.
●
Cuando se crea una vista, ésta avisa al modelo para
que la añada a su lista.
ModeloVista Modelo
Controlador
8. Interfaces gráficas con Swing28/Mayo/2012 66
Arquitectura MVC
●
Paso 1: Cuando el controlador recibe la acción
del usuario, envía un mensaje al modelo para
modificarlo.
ModeloVista Modelo
Controlador
8. Interfaces gráficas con Swing28/Mayo/2012 67
Arquitectura MVC
●
Paso 2: Cuando el modelo se modifica, envía
un mensaje a todas las vistas que tenga
registradas.
ModeloVista Modelo
Controlador
8. Interfaces gráficas con Swing28/Mayo/2012 68
Arquitectura MVC
●
Paso 3: La vista se actualiza con los cambios
realizados en el modelo
ModeloVista Modelo
Controlador
8. Interfaces gráficas con Swing28/Mayo/2012 69
Referencias
●
P. Deitel, H. Deitel
Java. How to Program (9th Edition)
Caps. 14, 15 y 25
●
B. Eckel
Thinking in Java (3rd Edition)
Cap. 14
●
J. Zukowski
The definitive guide to Java Swing

Mais conteúdo relacionado

Mais procurados

Introducción a Swing
Introducción a SwingIntroducción a Swing
Introducción a Swingmrojas_unitec
 
Programación Orientada a Eventos Java
Programación Orientada a Eventos JavaProgramación Orientada a Eventos Java
Programación Orientada a Eventos JavaJosé Mendoza
 
Java - Tutorial Ventanas
Java - Tutorial VentanasJava - Tutorial Ventanas
Java - Tutorial Ventanaselsemieni
 
Guis en java-1pp_2012_
Guis en java-1pp_2012_Guis en java-1pp_2012_
Guis en java-1pp_2012_Robert Wolf
 
Java GUI La librería Swing
Java GUI La librería Swing Java GUI La librería Swing
Java GUI La librería Swing Laura
 
Interfaz gráfica de usuario y eventos (introducción)
Interfaz gráfica de usuario y eventos (introducción)Interfaz gráfica de usuario y eventos (introducción)
Interfaz gráfica de usuario y eventos (introducción)Omar B.
 
Guia practica funciones en java con NetBeans
Guia practica funciones en java con NetBeansGuia practica funciones en java con NetBeans
Guia practica funciones en java con NetBeansEmerson Garay
 
Codificacion de clases en java con NetBeans
Codificacion de clases en java con NetBeansCodificacion de clases en java con NetBeans
Codificacion de clases en java con NetBeansEmerson Garay
 
Swing
SwingSwing
SwingEPN
 
Diseño y validacion GUI con java usando Netbeans
Diseño y validacion GUI con java usando NetbeansDiseño y validacion GUI con java usando Netbeans
Diseño y validacion GUI con java usando NetbeansEmerson Garay
 

Mais procurados (16)

Swing
SwingSwing
Swing
 
Programacion en JAVA 2
Programacion en JAVA 2Programacion en JAVA 2
Programacion en JAVA 2
 
Java
JavaJava
Java
 
Decorator
DecoratorDecorator
Decorator
 
Introducción a Swing
Introducción a SwingIntroducción a Swing
Introducción a Swing
 
Programación Orientada a Eventos Java
Programación Orientada a Eventos JavaProgramación Orientada a Eventos Java
Programación Orientada a Eventos Java
 
Swing1
Swing1Swing1
Swing1
 
Java - Tutorial Ventanas
Java - Tutorial VentanasJava - Tutorial Ventanas
Java - Tutorial Ventanas
 
Guis en java-1pp_2012_
Guis en java-1pp_2012_Guis en java-1pp_2012_
Guis en java-1pp_2012_
 
Java GUI La librería Swing
Java GUI La librería Swing Java GUI La librería Swing
Java GUI La librería Swing
 
Interfaz gráfica de usuario y eventos (introducción)
Interfaz gráfica de usuario y eventos (introducción)Interfaz gráfica de usuario y eventos (introducción)
Interfaz gráfica de usuario y eventos (introducción)
 
Guia practica funciones en java con NetBeans
Guia practica funciones en java con NetBeansGuia practica funciones en java con NetBeans
Guia practica funciones en java con NetBeans
 
Codificacion de clases en java con NetBeans
Codificacion de clases en java con NetBeansCodificacion de clases en java con NetBeans
Codificacion de clases en java con NetBeans
 
Swing
SwingSwing
Swing
 
Diseño y validacion GUI con java usando Netbeans
Diseño y validacion GUI con java usando NetbeansDiseño y validacion GUI con java usando Netbeans
Diseño y validacion GUI con java usando Netbeans
 
Informe2
Informe2Informe2
Informe2
 

Destaque

Las flores (1)
Las flores (1)Las flores (1)
Las flores (1)yudibel
 
EWMA 2014 - EP387 WOUND TREATMENT, THE PRIZE PRODUCT OF PRIMARY CARE NURSING
EWMA 2014 - EP387 WOUND TREATMENT, THE PRIZE PRODUCT OF PRIMARY CARE NURSINGEWMA 2014 - EP387 WOUND TREATMENT, THE PRIZE PRODUCT OF PRIMARY CARE NURSING
EWMA 2014 - EP387 WOUND TREATMENT, THE PRIZE PRODUCT OF PRIMARY CARE NURSINGEWMA
 
Valores para una convivencia social
Valores para una convivencia socialValores para una convivencia social
Valores para una convivencia socialJohan Pardo
 
Herramientas de trabajo que todo freelancer debe conocer
Herramientas de trabajo que todo freelancer debe conocerHerramientas de trabajo que todo freelancer debe conocer
Herramientas de trabajo que todo freelancer debe conocerKaren Quintero Castañeda
 
Software libre y aplicaciones en educacion
Software libre y aplicaciones en educacionSoftware libre y aplicaciones en educacion
Software libre y aplicaciones en educacionroxana_villicana
 
Trabaja freelance a través de Upwork y date a conocer con miles de posibles c...
Trabaja freelance a través de Upwork y date a conocer con miles de posibles c...Trabaja freelance a través de Upwork y date a conocer con miles de posibles c...
Trabaja freelance a través de Upwork y date a conocer con miles de posibles c...Karen Quintero Castañeda
 
Dengue
DengueDengue
Dengueseggal
 
Tecnologia Educativa - Actividad 5
Tecnologia Educativa - Actividad 5Tecnologia Educativa - Actividad 5
Tecnologia Educativa - Actividad 5mntoledo
 
Tics en la educacion
Tics en la educacionTics en la educacion
Tics en la educacionelizaconrado
 
La rentabilidad
La rentabilidadLa rentabilidad
La rentabilidadmoreno94
 
¿Estás listo para una carrera freelance a tiempo completo? Lo sabrás si estás...
¿Estás listo para una carrera freelance a tiempo completo? Lo sabrás si estás...¿Estás listo para una carrera freelance a tiempo completo? Lo sabrás si estás...
¿Estás listo para una carrera freelance a tiempo completo? Lo sabrás si estás...Karen Quintero Castañeda
 
Condiciones de la comunicación santiago moreno
Condiciones de la comunicación santiago morenoCondiciones de la comunicación santiago moreno
Condiciones de la comunicación santiago morenomoreno94
 

Destaque (20)

Coordinacion TIC
Coordinacion TICCoordinacion TIC
Coordinacion TIC
 
Las flores (1)
Las flores (1)Las flores (1)
Las flores (1)
 
EWMA 2014 - EP387 WOUND TREATMENT, THE PRIZE PRODUCT OF PRIMARY CARE NURSING
EWMA 2014 - EP387 WOUND TREATMENT, THE PRIZE PRODUCT OF PRIMARY CARE NURSINGEWMA 2014 - EP387 WOUND TREATMENT, THE PRIZE PRODUCT OF PRIMARY CARE NURSING
EWMA 2014 - EP387 WOUND TREATMENT, THE PRIZE PRODUCT OF PRIMARY CARE NURSING
 
Valores para una convivencia social
Valores para una convivencia socialValores para una convivencia social
Valores para una convivencia social
 
Herramientas de trabajo que todo freelancer debe conocer
Herramientas de trabajo que todo freelancer debe conocerHerramientas de trabajo que todo freelancer debe conocer
Herramientas de trabajo que todo freelancer debe conocer
 
Software libre y aplicaciones en educacion
Software libre y aplicaciones en educacionSoftware libre y aplicaciones en educacion
Software libre y aplicaciones en educacion
 
Preguntas
PreguntasPreguntas
Preguntas
 
Trabaja freelance a través de Upwork y date a conocer con miles de posibles c...
Trabaja freelance a través de Upwork y date a conocer con miles de posibles c...Trabaja freelance a través de Upwork y date a conocer con miles de posibles c...
Trabaja freelance a través de Upwork y date a conocer con miles de posibles c...
 
Dinámicas unidad2
Dinámicas unidad2Dinámicas unidad2
Dinámicas unidad2
 
Instrucciones
InstruccionesInstrucciones
Instrucciones
 
Dengue
DengueDengue
Dengue
 
Tecnologia Educativa - Actividad 5
Tecnologia Educativa - Actividad 5Tecnologia Educativa - Actividad 5
Tecnologia Educativa - Actividad 5
 
Trabajo final de ciencias políticas
Trabajo final de ciencias políticasTrabajo final de ciencias políticas
Trabajo final de ciencias políticas
 
Tics en la educacion
Tics en la educacionTics en la educacion
Tics en la educacion
 
Segundo encuentro eje 2
Segundo encuentro   eje 2Segundo encuentro   eje 2
Segundo encuentro eje 2
 
La rentabilidad
La rentabilidadLa rentabilidad
La rentabilidad
 
50 aniversario derechos_ninos
50 aniversario derechos_ninos50 aniversario derechos_ninos
50 aniversario derechos_ninos
 
¿Estás listo para una carrera freelance a tiempo completo? Lo sabrás si estás...
¿Estás listo para una carrera freelance a tiempo completo? Lo sabrás si estás...¿Estás listo para una carrera freelance a tiempo completo? Lo sabrás si estás...
¿Estás listo para una carrera freelance a tiempo completo? Lo sabrás si estás...
 
Condiciones de la comunicación santiago moreno
Condiciones de la comunicación santiago morenoCondiciones de la comunicación santiago moreno
Condiciones de la comunicación santiago moreno
 
Lleó
LleóLleó
Lleó
 

Semelhante a Swing (20)

Swing.pptx
Swing.pptxSwing.pptx
Swing.pptx
 
Swing (1)
Swing (1)Swing (1)
Swing (1)
 
Java tema06a
Java tema06aJava tema06a
Java tema06a
 
7 y 8. interfaz grafica en java
7 y 8.  interfaz grafica en java7 y 8.  interfaz grafica en java
7 y 8. interfaz grafica en java
 
GWT
GWTGWT
GWT
 
Tema6resumido
Tema6resumidoTema6resumido
Tema6resumido
 
S5-P2.pptx
S5-P2.pptxS5-P2.pptx
S5-P2.pptx
 
1TAP Tema 1-GUI.pptx
1TAP Tema 1-GUI.pptx1TAP Tema 1-GUI.pptx
1TAP Tema 1-GUI.pptx
 
Swing intefaz grafica de usuario
Swing intefaz grafica de usuarioSwing intefaz grafica de usuario
Swing intefaz grafica de usuario
 
Vbr Awt 01
Vbr Awt 01Vbr Awt 01
Vbr Awt 01
 
Gu is awt_swing
Gu is awt_swingGu is awt_swing
Gu is awt_swing
 
Programacion_II_Interfaz_grafica_guia_I
Programacion_II_Interfaz_grafica_guia_IProgramacion_II_Interfaz_grafica_guia_I
Programacion_II_Interfaz_grafica_guia_I
 
Curso Java Inicial 8 Conceptos Avanzados Awt
Curso Java Inicial   8 Conceptos Avanzados   AwtCurso Java Inicial   8 Conceptos Avanzados   Awt
Curso Java Inicial 8 Conceptos Avanzados Awt
 
Interfaces Usuario 3
Interfaces Usuario 3Interfaces Usuario 3
Interfaces Usuario 3
 
Tema 4 3_3_interfaces_de_usuario
Tema 4 3_3_interfaces_de_usuarioTema 4 3_3_interfaces_de_usuario
Tema 4 3_3_interfaces_de_usuario
 
Interfaces graficas(1)
Interfaces graficas(1)Interfaces graficas(1)
Interfaces graficas(1)
 
Programa calculadora
Programa calculadoraPrograma calculadora
Programa calculadora
 
Introduccion a awt
Introduccion a awtIntroduccion a awt
Introduccion a awt
 
Lps 15 gu-iconswing
Lps 15 gu-iconswingLps 15 gu-iconswing
Lps 15 gu-iconswing
 
Tema 4 3_1_interfaces_de_usuario
Tema 4 3_1_interfaces_de_usuarioTema 4 3_1_interfaces_de_usuario
Tema 4 3_1_interfaces_de_usuario
 

Mais de jbersosa

Las excepciones standar
Las excepciones standarLas excepciones standar
Las excepciones standarjbersosa
 
Mas sobre excepciones
Mas sobre excepcionesMas sobre excepciones
Mas sobre excepcionesjbersosa
 
Estructuras de control try catch
Estructuras de control try catchEstructuras de control try catch
Estructuras de control try catchjbersosa
 
Clasen1java
Clasen1javaClasen1java
Clasen1javajbersosa
 
Programación java1
Programación java1Programación java1
Programación java1jbersosa
 
Tercercortesistop
TercercortesistopTercercortesistop
Tercercortesistopjbersosa
 
Encapsulacion
EncapsulacionEncapsulacion
Encapsulacionjbersosa
 
Administracion de la memoria principal
Administracion de  la memoria principalAdministracion de  la memoria principal
Administracion de la memoria principaljbersosa
 
Auditoria 2
Auditoria 2Auditoria 2
Auditoria 2jbersosa
 
Auditoriasistemasi 150703002656-lva1-app6891
Auditoriasistemasi 150703002656-lva1-app6891Auditoriasistemasi 150703002656-lva1-app6891
Auditoriasistemasi 150703002656-lva1-app6891jbersosa
 
Auditoria informatica
Auditoria informaticaAuditoria informatica
Auditoria informaticajbersosa
 
Auditoria de sistemas (1)
Auditoria de sistemas (1)Auditoria de sistemas (1)
Auditoria de sistemas (1)jbersosa
 
Auditoría de sistemas de información presentación
Auditoría de sistemas de información presentaciónAuditoría de sistemas de información presentación
Auditoría de sistemas de información presentaciónjbersosa
 
Realizar investigación y hacer un análisis por cada tema asignado al particip...
Realizar investigación y hacer un análisis por cada tema asignado al particip...Realizar investigación y hacer un análisis por cada tema asignado al particip...
Realizar investigación y hacer un análisis por cada tema asignado al particip...jbersosa
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativosjbersosa
 
Estructura de una red
Estructura de una redEstructura de una red
Estructura de una redjbersosa
 
Proyectodeprogramacinidesegundocorte2015 2
Proyectodeprogramacinidesegundocorte2015 2Proyectodeprogramacinidesegundocorte2015 2
Proyectodeprogramacinidesegundocorte2015 2jbersosa
 
Bases de datos mysql y repotes usando jasper report
Bases de datos mysql y repotes usando jasper reportBases de datos mysql y repotes usando jasper report
Bases de datos mysql y repotes usando jasper reportjbersosa
 

Mais de jbersosa (20)

Las excepciones standar
Las excepciones standarLas excepciones standar
Las excepciones standar
 
Mas sobre excepciones
Mas sobre excepcionesMas sobre excepciones
Mas sobre excepciones
 
Estructuras de control try catch
Estructuras de control try catchEstructuras de control try catch
Estructuras de control try catch
 
Main
MainMain
Main
 
Clasen1java
Clasen1javaClasen1java
Clasen1java
 
Programación java1
Programación java1Programación java1
Programación java1
 
Tercercortesistop
TercercortesistopTercercortesistop
Tercercortesistop
 
Encapsulacion
EncapsulacionEncapsulacion
Encapsulacion
 
Administracion de la memoria principal
Administracion de  la memoria principalAdministracion de  la memoria principal
Administracion de la memoria principal
 
Auditoria 2
Auditoria 2Auditoria 2
Auditoria 2
 
Auditoriasistemasi 150703002656-lva1-app6891
Auditoriasistemasi 150703002656-lva1-app6891Auditoriasistemasi 150703002656-lva1-app6891
Auditoriasistemasi 150703002656-lva1-app6891
 
Auditoria informatica
Auditoria informaticaAuditoria informatica
Auditoria informatica
 
Auditoria de sistemas (1)
Auditoria de sistemas (1)Auditoria de sistemas (1)
Auditoria de sistemas (1)
 
Auditoría de sistemas de información presentación
Auditoría de sistemas de información presentaciónAuditoría de sistemas de información presentación
Auditoría de sistemas de información presentación
 
Realizar investigación y hacer un análisis por cada tema asignado al particip...
Realizar investigación y hacer un análisis por cada tema asignado al particip...Realizar investigación y hacer un análisis por cada tema asignado al particip...
Realizar investigación y hacer un análisis por cada tema asignado al particip...
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
Php
PhpPhp
Php
 
Estructura de una red
Estructura de una redEstructura de una red
Estructura de una red
 
Proyectodeprogramacinidesegundocorte2015 2
Proyectodeprogramacinidesegundocorte2015 2Proyectodeprogramacinidesegundocorte2015 2
Proyectodeprogramacinidesegundocorte2015 2
 
Bases de datos mysql y repotes usando jasper report
Bases de datos mysql y repotes usando jasper reportBases de datos mysql y repotes usando jasper report
Bases de datos mysql y repotes usando jasper report
 

Último

Refrigeración Automotriz(aire acondicionado)..pptx
Refrigeración Automotriz(aire acondicionado)..pptxRefrigeración Automotriz(aire acondicionado)..pptx
Refrigeración Automotriz(aire acondicionado)..pptxretrixx40
 
SESION DE APRENDIZAJE LOS SENTIDOS Y SUS CUIDADOS
SESION DE APRENDIZAJE LOS SENTIDOS Y SUS CUIDADOSSESION DE APRENDIZAJE LOS SENTIDOS Y SUS CUIDADOS
SESION DE APRENDIZAJE LOS SENTIDOS Y SUS CUIDADOSAnaRuiz123884
 
VALORIZACION DE MINERALES.pptx VALORIZACION DE MINERALES.pptx
VALORIZACION DE MINERALES.pptx VALORIZACION DE MINERALES.pptxVALORIZACION DE MINERALES.pptx VALORIZACION DE MINERALES.pptx
VALORIZACION DE MINERALES.pptx VALORIZACION DE MINERALES.pptxMartinMezarina1
 
GESTIÓN POR RESULTADOS EN EL SECTOR PÚBLICO.pptx
GESTIÓN POR RESULTADOS EN EL SECTOR PÚBLICO.pptxGESTIÓN POR RESULTADOS EN EL SECTOR PÚBLICO.pptx
GESTIÓN POR RESULTADOS EN EL SECTOR PÚBLICO.pptxFernandoEstradaGimen
 
Dibujo técnico - Teoria de Tolerancias y Ajustes.pdf
Dibujo técnico - Teoria de Tolerancias y Ajustes.pdfDibujo técnico - Teoria de Tolerancias y Ajustes.pdf
Dibujo técnico - Teoria de Tolerancias y Ajustes.pdfHaroldJaimeSanchezMi
 
SISTEMA TBI CHRYSLER UNIDAD 2.pptxxxxxcx
SISTEMA TBI CHRYSLER UNIDAD 2.pptxxxxxcxSISTEMA TBI CHRYSLER UNIDAD 2.pptxxxxxcx
SISTEMA TBI CHRYSLER UNIDAD 2.pptxxxxxcxdenilsonaldahir2
 
3.BATERIA y sus princiaples componentes internos que llleva para su correcto uso
3.BATERIA y sus princiaples componentes internos que llleva para su correcto uso3.BATERIA y sus princiaples componentes internos que llleva para su correcto uso
3.BATERIA y sus princiaples componentes internos que llleva para su correcto usofranklintrinidad00
 
capacitacion-para-limpieza-en-laboratorios-1.ppt
capacitacion-para-limpieza-en-laboratorios-1.pptcapacitacion-para-limpieza-en-laboratorios-1.ppt
capacitacion-para-limpieza-en-laboratorios-1.pptMonicaEsterMosqueraM
 
https://es.slideshare.net/karolpr/normasdeauditoriagubernamentalpptx
https://es.slideshare.net/karolpr/normasdeauditoriagubernamentalpptxhttps://es.slideshare.net/karolpr/normasdeauditoriagubernamentalpptx
https://es.slideshare.net/karolpr/normasdeauditoriagubernamentalpptxMartinMezarina1
 
Citroen C5 Aircross manual de utilizacion.pdf
Citroen C5 Aircross manual de utilizacion.pdfCitroen C5 Aircross manual de utilizacion.pdf
Citroen C5 Aircross manual de utilizacion.pdfmanonon
 
NX-400-FALCON-COSTARICA-Manual-Usuario.pdf
NX-400-FALCON-COSTARICA-Manual-Usuario.pdfNX-400-FALCON-COSTARICA-Manual-Usuario.pdf
NX-400-FALCON-COSTARICA-Manual-Usuario.pdfDanielMangoldNieves
 

Último (11)

Refrigeración Automotriz(aire acondicionado)..pptx
Refrigeración Automotriz(aire acondicionado)..pptxRefrigeración Automotriz(aire acondicionado)..pptx
Refrigeración Automotriz(aire acondicionado)..pptx
 
SESION DE APRENDIZAJE LOS SENTIDOS Y SUS CUIDADOS
SESION DE APRENDIZAJE LOS SENTIDOS Y SUS CUIDADOSSESION DE APRENDIZAJE LOS SENTIDOS Y SUS CUIDADOS
SESION DE APRENDIZAJE LOS SENTIDOS Y SUS CUIDADOS
 
VALORIZACION DE MINERALES.pptx VALORIZACION DE MINERALES.pptx
VALORIZACION DE MINERALES.pptx VALORIZACION DE MINERALES.pptxVALORIZACION DE MINERALES.pptx VALORIZACION DE MINERALES.pptx
VALORIZACION DE MINERALES.pptx VALORIZACION DE MINERALES.pptx
 
GESTIÓN POR RESULTADOS EN EL SECTOR PÚBLICO.pptx
GESTIÓN POR RESULTADOS EN EL SECTOR PÚBLICO.pptxGESTIÓN POR RESULTADOS EN EL SECTOR PÚBLICO.pptx
GESTIÓN POR RESULTADOS EN EL SECTOR PÚBLICO.pptx
 
Dibujo técnico - Teoria de Tolerancias y Ajustes.pdf
Dibujo técnico - Teoria de Tolerancias y Ajustes.pdfDibujo técnico - Teoria de Tolerancias y Ajustes.pdf
Dibujo técnico - Teoria de Tolerancias y Ajustes.pdf
 
SISTEMA TBI CHRYSLER UNIDAD 2.pptxxxxxcx
SISTEMA TBI CHRYSLER UNIDAD 2.pptxxxxxcxSISTEMA TBI CHRYSLER UNIDAD 2.pptxxxxxcx
SISTEMA TBI CHRYSLER UNIDAD 2.pptxxxxxcx
 
3.BATERIA y sus princiaples componentes internos que llleva para su correcto uso
3.BATERIA y sus princiaples componentes internos que llleva para su correcto uso3.BATERIA y sus princiaples componentes internos que llleva para su correcto uso
3.BATERIA y sus princiaples componentes internos que llleva para su correcto uso
 
capacitacion-para-limpieza-en-laboratorios-1.ppt
capacitacion-para-limpieza-en-laboratorios-1.pptcapacitacion-para-limpieza-en-laboratorios-1.ppt
capacitacion-para-limpieza-en-laboratorios-1.ppt
 
https://es.slideshare.net/karolpr/normasdeauditoriagubernamentalpptx
https://es.slideshare.net/karolpr/normasdeauditoriagubernamentalpptxhttps://es.slideshare.net/karolpr/normasdeauditoriagubernamentalpptx
https://es.slideshare.net/karolpr/normasdeauditoriagubernamentalpptx
 
Citroen C5 Aircross manual de utilizacion.pdf
Citroen C5 Aircross manual de utilizacion.pdfCitroen C5 Aircross manual de utilizacion.pdf
Citroen C5 Aircross manual de utilizacion.pdf
 
NX-400-FALCON-COSTARICA-Manual-Usuario.pdf
NX-400-FALCON-COSTARICA-Manual-Usuario.pdfNX-400-FALCON-COSTARICA-Manual-Usuario.pdf
NX-400-FALCON-COSTARICA-Manual-Usuario.pdf
 

Swing

  • 1. Interfaces gráficas con Swing Java y Servicios Web I Master en Ingeniería Matemática Manuel Montenegro Dpto. Sistemas Informáticos y Computación Desp. 467 (Mat) montenegro@fdi.ucm.es
  • 2. 8. Interfaces gráficas con Swing28/Mayo/2012 2 Introducción ● Swing es una biblioteca de interfaces gráficas de usuario (GUI) para Java. ● Viene incluida con el entorno de desarrollo de Java (JDK). ● Extiende a otra librería gráfica más antigua llamada AWT. ● Paquetes: ● javax.swing ● java.awt ● java.awt.event ● Alternativas: SWT (http://www.eclipse.org/swt/)
  • 3. 8. Interfaces gráficas con Swing28/Mayo/2012 3 Contenidos ● Ventanas ● Componentes ● Layout Managers ● Manejo de eventos ● Cuadros de diálogo predefinidos ● Dibujo de gráficos ● Arquitectura MVC
  • 4. 8. Interfaces gráficas con Swing28/Mayo/2012 4 Creación de ventanas ● La clase JFrame proporciona operaciones para manipular ventanas. ● Constructores: ● JFrame() ● JFrame(String titulo) ● Una vez creado el objeto de ventana, hay que: ● Establecer su tamaño. ● Establecer la acción de cierre. ● Hacerla visible.
  • 5. 8. Interfaces gráficas con Swing28/Mayo/2012 5 Creación de ventanas import javax.swing.*; public class VentanaTest { public static void main(String[] args) { JFrame f = new JFrame("Titulo de ventana"); f.setSize(400, 300); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } } ● Acciones de cierre: ● JFrame.EXIT_ON_CLOSE: Abandona aplicación. ● JFrame.DISPOSE_ON_CLOSE: Libera los recursos asociados a la ventana. ● JFrame.DO_NOTHING_ON_CLOSE: No hace nada. ● JFrame.HIDE_ON_CLOSE: Cierra la ventana, sin liberar sus recursos.
  • 6. 8. Interfaces gráficas con Swing28/Mayo/2012 6 Creación de ventanas
  • 7. 8. Interfaces gráficas con Swing28/Mayo/2012 7 Creación de ventanas ● Es usual extender la clase JFrame, y realizar las operaciones de inicialización en su constructor. public class MiVentana extends JFrame { public MiVentana() { super("Titulo de ventana"); setSize(400, 300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } public class VentanaTest { public static void main(String[] args) { MiVentana v = new MiVentana(); v.setVisible(true); } }
  • 8. 8. Interfaces gráficas con Swing28/Mayo/2012 8 Contenidos ● Ventanas ● Componentes ● Layout Managers ● Manejo de eventos ● Cuadros de diálogo predefinidos ● Dibujo de gráficos ● Arquitectura MVC
  • 9. 8. Interfaces gráficas con Swing28/Mayo/2012 9 Componentes de una ventana JButton JLabel JTextField JCheckBox JRadioButton ● Tras crear uno de estos componentes con new, ha de añadirse al contentPane de la ventana correspondiente mediante su método add.
  • 10. 8. Interfaces gráficas con Swing28/Mayo/2012 10 Añadir componentes public class MiVentana extends JFrame { public MiVentana() { super("Titulo de ventana"); setSize(400, 300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container cp = getContentPane(); cp.setLayout(new FlowLayout()); JLabel etiqueta = new JLabel("Nombre: "); JTextField texto = new JTextField(20); JButton boton = new JButton("Saludar"); cp.add(etiqueta); cp.add(texto); cp.add(boton); } }
  • 11. 8. Interfaces gráficas con Swing28/Mayo/2012 11 Añadir componentes
  • 12. 8. Interfaces gráficas con Swing28/Mayo/2012 12 Contenidos ● Ventanas ● Componentes ● Layout Managers ● Manejo de eventos ● Cuadros de diálogo predefinidos ● Dibujo de gráficos ● Arquitectura MVC
  • 13. 8. Interfaces gráficas con Swing28/Mayo/2012 13 Layout Managers ● En Java no es habitual indicar explícitamente la posición de los componentes de la interfaz dentro de la ventana. ● Los layout managers se encargan de colocar los componentes de la interfaz de usuario en la ventana contenedora. ● Especifican la posición y el tamaño de dichos componentes. ● FlowLayout ● GridLayout ● BorderLayout ● GridBagLayout ● …
  • 14. 8. Interfaces gráficas con Swing28/Mayo/2012 14 FlowLayout ● Coloca los elementos uno a continuación de otro, de manera similar a la colocación de palabras en un procesador de textos. ● Métodos: ● setAligment(int alineacion) ● setHgap(int separacion) ● setVgap(int separacion)
  • 15. 8. Interfaces gráficas con Swing28/Mayo/2012 15 GridLayout ● Coloca los componentes de la interfaz en forma de rejilla. ● El orden en que se añadan los componentes determina su posición en la rejilla. ● Constructor: ● GridLayout(int filas, int columnas) ● Métodos: ● setHgap(int separacion) ● setVgap(int separacion)
  • 16. 8. Interfaces gráficas con Swing28/Mayo/2012 16 GridLayout public class MiVentana2 extends JFrame { public MiVentana2() { super("Titulo de ventana"); setSize(400, 300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container cp = getContentPane(); GridLayout gl = new GridLayout(4,3); gl.setHgap(5); gl.setVgap(5); cp.setLayout(gl); for(int i = 1; i <= 9; i++) { cp.add(new JButton(String.valueOf(i))); } cp.add(new JButton("*")); cp.add(new JButton("0")); cp.add(new JButton("#")); } }
  • 17. 8. Interfaces gráficas con Swing28/Mayo/2012 17 GridLayout
  • 18. 8. Interfaces gráficas con Swing28/Mayo/2012 18 BorderLayout ● Coloca y cambia de tamaño sus componentes para que se ajusten a los bordes y parte central de la ventana. ● Métodos: ● setHgap(int separacion) ● setVgap(int separacion) ● Al añadir un elemento a la ventana, hay que especificar su colocación: JButton b = new JButton(...); getContentPane().add(b, BorderLayout.EAST)
  • 19. 8. Interfaces gráficas con Swing28/Mayo/2012 19 Interfaces complejas: JPanel ● Un panel es un componente con un layout manager propio, y que puede contener varios componentes en su interior. ● Constructor: ● JPanel() ● Métodos: ● void setLayout(LayoutManager lm) ● void add(JComponent componente) ● …
  • 20. 8. Interfaces gráficas con Swing28/Mayo/2012 20 Interfaces complejas: JPanel
  • 21. 8. Interfaces gráficas con Swing28/Mayo/2012 21 Interfaces complejas: JPanel GridLayout FlowLayout FlowLayout
  • 22. 8. Interfaces gráficas con Swing28/Mayo/2012 22 Interfaces complejas: JPanel public MiVentana3() { super("Añadir usuario"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Panel de fecha JPanel panelFecha = new JPanel(); panelFecha.setLayout(new FlowLayout()); panelFecha.add(new JTextField(2)); panelFecha.add(new JLabel("/")); panelFecha.add(new JTextField(2)); panelFecha.add(new JLabel("/")); panelFecha.add(new JTextField(2)); // Panel de datos JPanel panelDatos = new JPanel(); GridLayout gl = new GridLayout(3,2,0,5); panelDatos.setLayout(gl); panelDatos.add(new JLabel("Nombre:")); panelDatos.add(new JTextField(10)); panelDatos.add(new JLabel("DNI:")); panelDatos.add(new JTextField(10)); panelDatos.add(new JLabel("Fecha de nacimiento: ")); panelDatos.add(panelFecha); …
  • 23. 8. Interfaces gráficas con Swing28/Mayo/2012 23 Interfaces complejas: JPanel … // Panel de botones JPanel panelBotones = new JPanel(); panelBotones.setLayout(new FlowLayout()); panelBotones.add(new JButton("Aceptar")); panelBotones.add(new JButton("Cancelar")); Container cp = getContentPane(); cp.add(panelDatos, BorderLayout.CENTER); cp.add(panelBotones, BorderLayout.SOUTH); }
  • 24. 8. Interfaces gráficas con Swing28/Mayo/2012 24 Interfaces complejas: GridBagLayout ● Más flexible que GridLayout ● Cada componente ha de tener asociado un objeto de la clase GridBagConstraints. La asociación se producirá en el método add. JButton b = new JButton(“Aceptar”); GridBagConstraints gbc = new GridBagConstraints(...); getContentPane().add(b, gbc);
  • 25. 8. Interfaces gráficas con Swing28/Mayo/2012 25 GridBagConstraints ● Atributos públicos: ● int gridx, gridy ● int gridwidth, gridheight ● double weightx, weighty ● int fill ● int anchor ● Insets insets ● int ipadx, ipady ● Pueden ser inicializados en el constructor.
  • 26. 8. Interfaces gráficas con Swing28/Mayo/2012 26 GridBagConstraints ● Atributos públicos: ● int gridx, gridy
  • 27. 8. Interfaces gráficas con Swing28/Mayo/2012 27 GridBagConstraints ● Atributos públicos: ● int gridwidth, gridheight gridheight = 2 gridwidth = 2
  • 28. 8. Interfaces gráficas con Swing28/Mayo/2012 28 GridBagConstraints ● Atributos públicos: ● double weightx, weighty weightx = 1.0 weightx = 0.0
  • 29. 8. Interfaces gráficas con Swing28/Mayo/2012 29 GridBagConstraints ● Atributos públicos: ● int fill ● Puede ser: ● GridBagLayout.HORIZONTAL ● GridBagLayout.VERTICAL ● GridBagLayout.BOTH
  • 30. 8. Interfaces gráficas con Swing28/Mayo/2012 30 GridBagConstraints ● Atributos públicos: ● int anchor
  • 31. 8. Interfaces gráficas con Swing28/Mayo/2012 31 GridBagConstraints ● Atributos públicos: ● Insets insets insets = new Insets(10, 20, 10, 20)
  • 32. 8. Interfaces gráficas con Swing28/Mayo/2012 32 GridBagConstraints ● Atributos públicos: ● int padx, int pady ● Especifican cuánto espacio añadir a la anchura/altura mínima de los componentes.
  • 33. 8. Interfaces gráficas con Swing28/Mayo/2012 33 Constructores de interfaces ● Permiten construir interfaces de usuario interactivamente. ● Ejemplo: Netbeans (netbeans.org)
  • 34. 8. Interfaces gráficas con Swing28/Mayo/2012 34 Contenidos ● Ventanas ● Componentes ● Layout Managers ● Manejo de eventos ● Cuadros de diálogo predefinidos ● Dibujo de gráficos ● Arquitectura MVC
  • 35. 8. Interfaces gráficas con Swing28/Mayo/2012 35 Manejo de eventos ● Un evento es un suceso que ocurre como consecuencia de la interacción del usuario con la interfaz gráfica. ● Pulsación de un botón. ● Cambio del contenido en un cuadro de texto. ● Deslizamiento de una barra. ● Activación de un JCheckBox. ● Movimiento de la ventana.
  • 36. 8. Interfaces gráficas con Swing28/Mayo/2012 36 Pulsación de un botón ● La clase JButton tiene un método: ● void addActionListener(ActionListener l) ● Que especifica el objeto (manejador de evento) que se encargará de tratar el evento de pulsación del botón. ● Este objeto ha de interpretar la interfaz ActionListener (paquete java.awt.event) public interface ActionListener { void actionPerformed(ActionEvent e) }
  • 37. 8. Interfaces gráficas con Swing28/Mayo/2012 37 Pulsación de un botón ● Cuando el usuario pulse el botón, se llamará al método actionPerformed de todos los manejadores de eventos que se hayan registrado. ● Métodos de ActionEvent: ● public Object getSource() ● public int getModifiers() public class Manejador implements ActionListener { public void actionPerformed(ActionEvent e) { ... } } Información sobre el evento
  • 38. 8. Interfaces gráficas con Swing28/Mayo/2012 38 Ejemplo public class BotonVentana extends JFrame { public BotonVentana() { super("Botón"); setSize(200,100); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container cp = getContentPane(); cp.setLayout(new FlowLayout()); JButton boton = new JButton("¡Púlsame!"); boton.addActionListener(new EventoBotonPulsado()); cp.add(boton); } }
  • 39. 8. Interfaces gráficas con Swing28/Mayo/2012 39 Ejemplo public class EventoBotonPulsado implements ActionListener { public void actionPerformed(ActionEvent e) { System.out.println(“¡Gracias!”); } }
  • 40. 8. Interfaces gráficas con Swing28/Mayo/2012 40 Ejemplo public class EventoBotonPulsado implements ActionListener { public void actionPerformed(ActionEvent e) { JButton boton = (JButton) e.getSource(); boton.setText("¡Gracias!"); } }
  • 41. 8. Interfaces gráficas con Swing28/Mayo/2012 41 Acceso a componentes de la interfaz
  • 42. 8. Interfaces gráficas con Swing28/Mayo/2012 42 Acceso a componentes de la interfaz public class EventoSaludo implements ActionListener { public void actionPerformed(ActionEvent e) { } } ? ● ¿Cómo accedo al objeto JTextField?
  • 43. 8. Interfaces gráficas con Swing28/Mayo/2012 43 Posibilidad 1 public class EventoSaludo implements ActionListener { private JTextField cuadroTexto; public EventoSaludo(JTextField cuadroTexto) { this.cuadroTexto = cuadroTexto; } public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(null, "¡Hola, " + cuadroTexto.getText() + "!"); } }
  • 44. 8. Interfaces gráficas con Swing28/Mayo/2012 44 Posibilidad 1 public class MiVentana extends JFrame { public MiVentana() { super("Titulo de ventana"); setSize(400, 300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLayout(new FlowLayout()); Container cp = getContentPane(); cp.add(new JLabel("Nombre :")); JTextField texto = new JTextField(20); cp.add(texto); JButton botonSaludo = new JButton("Saludar"); cp.add(botonSaludo); botonSaludo.addActionListener(new EventoSaludo(texto)); } }
  • 45. 8. Interfaces gráficas con Swing28/Mayo/2012 45 Posibilidad 2 public class MiVentana extends JFrame { private JTextField cuadroTexto; class EventoSaludo implements ActionListener { public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(null, "¡Hola, " + cuadroTexto.getText() + "!"); } } public MiVentana() { … cuadroTexto = new JTextField(20); cp.add(cuadroTexto); … botonSaludo.addActionListener(new EventoSaludo()); } }
  • 46. 8. Interfaces gráficas con Swing28/Mayo/2012 46 Posibilidad 3 public class MiVentana extends JFrame implements ActionListener { private JTextField cuadroTexto; public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(null, "¡Hola, " + cuadroTexto.getText() + "!"); } public MiVentana() { … cuadroTexto = new JTextField(20); cp.add(cuadroTexto); … botonSaludo.addActionListener(this); } }
  • 47. 8. Interfaces gráficas con Swing28/Mayo/2012 47 Eventos en un JTextField ● CaretListener: Cambios en la posición del cursor. ● void caretUpdate(CaretEvent e) ● DocumentListener: Cambios en el texto. ● void changedUpdate(DocumentEvent e) ● void insertUpdate(DocumentEvent e) ● void removeUpdate(DocumentEvent e) JTextField text = ...; text.addCaretListener(...); text.getDocument().addDocumentListener(...);
  • 48. 8. Interfaces gráficas con Swing28/Mayo/2012 48 Eventos en una ventana ● WindowListener ● void windowActivated(WindowEvent e) ● void windowClosed(WindowEvent e) ● void windowClosing(WindowEvent e) ● void windowDeactivated(WindowEvent e) ● void windowDeiconified(WindowEvent e) ● void windowIconified(WindowEvent e) ● void windowOpened(WindowEvent e)
  • 49. 8. Interfaces gráficas con Swing28/Mayo/2012 49 Eventos de ratón y de teclado ● MouseListener: Pulsaciones de botón, entradas y salidas del puntero en un componente. ● MouseMotionListener: Movimientos del ratón dentro de un componente. ● MouseWheelListener: Movimientos de la rueda central de un ratón. ● KeyListener: Pulsaciones de teclas.
  • 50. 8. Interfaces gráficas con Swing28/Mayo/2012 50 Contenidos ● Ventanas ● Componentes ● Layout Managers ● Manejo de eventos ● Cuadros de diálogo predefinidos ● Dibujo de gráficos ● Arquitectura MVC
  • 51. 8. Interfaces gráficas con Swing28/Mayo/2012 51 Cuadros de diálogo predefinidos ● La clase JOptionPane proporciona métodos de utilidad para mostrar ventanas de aviso y de confirmación estándar. ● void showMessageDialog(Component padre, Object mensaje, String tituloVentana, int tipoMensaje)
  • 52. 8. Interfaces gráficas con Swing28/Mayo/2012 52 Cuadros de diálogo predefinidos ● La clase JOptionPane proporciona métodos de utilidad para mostrar ventanas de aviso y de confirmación estándar. ● String showInputDialog(Component padre, Object mensaje, Object valorDefecto)
  • 53. 8. Interfaces gráficas con Swing28/Mayo/2012 53 Cuadros de diálogo predefinidos ● La clase JOptionPane proporciona métodos de utilidad para mostrar ventanas de aviso y de confirmación estándar. ● int showConfirmDialog(Component padre, Object mensaje, String titulo, int tipoOpciones, int tipoMensaje)
  • 54. 8. Interfaces gráficas con Swing28/Mayo/2012 54 Contenidos ● Ventanas ● Componentes ● Layout Managers ● Manejo de eventos ● Cuadros de diálogo predefinidos ● Dibujo de gráficos ● Arquitectura MVC
  • 55. 8. Interfaces gráficas con Swing28/Mayo/2012 55 Dibujar gráficos ● Cada componente tiene un método llamado paintComponent, que se encarga de pintarlo en pantalla. ● Para realizar un dibujo definido por el programador, basta con heredar de un componente (normalmente un JPanel), y sobreescribir su método paintComponent. ● void paintComponent(Graphics g)
  • 56. 8. Interfaces gráficas con Swing28/Mayo/2012 56 Dibujar gráficos ● Métodos de Graphics: ● void drawPolygon(int[] x, int[] y, int puntos) ● void drawRect(int x, int y, int ancho, int alto) ● void fillRect(int x, int y, int ancho, int alto) ● void drawOval(int x, int y, int ancho, int alto) ● void fillOval(int x, int y, int ancho, int alto) ● void drawString(String cad, int x, int y) ● void setColor(Color c) ● void setFont(Font f)
  • 57. 8. Interfaces gráficas con Swing28/Mayo/2012 57 Ejemplo public class PanelSol extends JPanel { public void paintComponent(Graphics g) { g.setColor(Color.ORANGE); g.fillOval(100,100,200,200); for (double d = 0; d < 2*Math.PI; d += 0.1) { int xEnd = (int) (200+150*Math.cos(d)); int yEnd = (int) (200+150*Math.sin(d)); g.drawLine(200, 200, xEnd, yEnd); } g.setColor(Color.BLACK); g.drawArc(150, 150, 100, 100, 230, 80); g.fillOval(150, 150, 20, 20); g.fillOval(230, 150, 20, 20); } }
  • 58. 8. Interfaces gráficas con Swing28/Mayo/2012 58 Ejemplo public class VentanaSol extends JFrame { public VentanaSol() { … Container cp = getContentPane(); cp.add(new PanelSol()); } }
  • 59. 8. Interfaces gráficas con Swing28/Mayo/2012 59 Aún hay más http://download.java.net/javadesktop/swingset3/SwingSet3.jnlp
  • 60. 8. Interfaces gráficas con Swing28/Mayo/2012 60 Aún hay más http://www.particle.kth.se/~fmi/kurs/PhysicsSimulation/Lectures/07A/swingDesign.html
  • 61. 8. Interfaces gráficas con Swing28/Mayo/2012 61 Contenidos ● Ventanas ● Componentes ● Layout Managers ● Manejo de eventos ● Cuadros de diálogo predefinidos ● Dibujo de gráficos ● Arquitectura MVC
  • 62. 8. Interfaces gráficas con Swing28/Mayo/2012 62 Arquitectura MVC ● MVC = Modelo – Vista – Controlador ● Es un patrón de diseño que separa los datos de la aplicación, la interfaz de usuario, y la lógica de negocio. ModeloVista Modelo Controlador
  • 63. 8. Interfaces gráficas con Swing28/Mayo/2012 63 Arquitectura MVC ● Ejemplo: Edición de textos. ModeloVista Modelo Controlador “Mi Texto” interfaz Documentclass JTextField class JTextField
  • 64. 8. Interfaces gráficas con Swing28/Mayo/2012 64 Arquitectura MVC ● Ejemplo: Listas ModeloVista Modelo Controlador {“MetaSystems”, Color.RED}, {“MetaWorks”, Color.BLUE}, … interfaz ListModelclass JList
  • 65. 8. Interfaces gráficas con Swing28/Mayo/2012 65 Arquitectura MVC ● Preparación: El modelo tiene una lista de vistas. Cada vez que haya un cambio de modelo, éste avisará a todas las vistas para que se actualicen. ● Cuando se crea una vista, ésta avisa al modelo para que la añada a su lista. ModeloVista Modelo Controlador
  • 66. 8. Interfaces gráficas con Swing28/Mayo/2012 66 Arquitectura MVC ● Paso 1: Cuando el controlador recibe la acción del usuario, envía un mensaje al modelo para modificarlo. ModeloVista Modelo Controlador
  • 67. 8. Interfaces gráficas con Swing28/Mayo/2012 67 Arquitectura MVC ● Paso 2: Cuando el modelo se modifica, envía un mensaje a todas las vistas que tenga registradas. ModeloVista Modelo Controlador
  • 68. 8. Interfaces gráficas con Swing28/Mayo/2012 68 Arquitectura MVC ● Paso 3: La vista se actualiza con los cambios realizados en el modelo ModeloVista Modelo Controlador
  • 69. 8. Interfaces gráficas con Swing28/Mayo/2012 69 Referencias ● P. Deitel, H. Deitel Java. How to Program (9th Edition) Caps. 14, 15 y 25 ● B. Eckel Thinking in Java (3rd Edition) Cap. 14 ● J. Zukowski The definitive guide to Java Swing