SlideShare una empresa de Scribd logo
1 de 69
Descargar para leer sin conexión
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
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 28/Mayo/2012 gráficas con Swing 2
Contenidos 
● Ventanas 
● Componentes 
● Layout Managers 
● Manejo de eventos 
● Cuadros de diálogo predefinidos 
● Dibujo de gráficos 
● Arquitectura MVC 
8. Interfaces 28/Mayo/2012 gráficas con Swing 3
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 28/Mayo/2012 gráficas con Swing 4
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 28/Mayo/2012 gráficas con Swing 5
Creación de ventanas 
8. Interfaces 28/Mayo/2012 gráficas con Swing 6
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 28/Mayo/2012 gráficas con Swing 7
Contenidos 
● Ventanas 
● Componentes 
● Layout Managers 
● Manejo de eventos 
● Cuadros de diálogo predefinidos 
● Dibujo de gráficos 
● Arquitectura MVC 
8. Interfaces 28/Mayo/2012 gráficas con Swing 8
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 28/Mayo/2012 gráficas con Swing 9
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 28/Mayo/2012 gráficas con Swing 10
Añadir componentes 
8. Interfaces 28/Mayo/2012 gráficas con Swing 11
Contenidos 
● Ventanas 
● Componentes 
● Layout Managers 
● Manejo de eventos 
● Cuadros de diálogo predefinidos 
● Dibujo de gráficos 
● Arquitectura MVC 
8. Interfaces 28/Mayo/2012 gráficas con Swing 12
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 28/Mayo/2012 gráficas con Swing 13
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 28/Mayo/2012 gráficas con Swing 14
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 28/Mayo/2012 gráficas con Swing 15
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 28/Mayo/2012 gráficas con Swing 16
GridLayout 
8. Interfaces 28/Mayo/2012 gráficas con Swing 17
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 28/Mayo/2012 gráficas con Swing 18
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 28/Mayo/2012 gráficas con Swing 19
Interfaces complejas: JPanel 
8. Interfaces 28/Mayo/2012 gráficas con Swing 20
Interfaces complejas: JPanel 
GridLayout 
FlowLayout 
FlowLayout 
8. Interfaces 28/Mayo/2012 gráficas con Swing 21
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 28/Mayo/2012 gráficas con Swing 22
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 28/Mayo/2012 gráficas con Swing 23
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 28/Mayo/2012 gráficas con Swing 24
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 28/Mayo/2012 gráficas con Swing 25
GridBagConstraints 
● Atributos públicos: 
● int gridx, gridy 
8. Interfaces 28/Mayo/2012 gráficas con Swing 26
GridBagConstraints 
● Atributos públicos: 
● int gridwidth, gridheight 
gridheight = 2 
gridwidth = 2 
8. Interfaces 28/Mayo/2012 gráficas con Swing 27
GridBagConstraints 
● Atributos públicos: 
● double weightx, weighty 
weightx = 1.0 weightx = 0.0 
8. Interfaces 28/Mayo/2012 gráficas con Swing 28
GridBagConstraints 
● Atributos públicos: 
● int fill 
● Puede ser: 
● GridBagLayout.HORIZONTAL 
● GridBagLayout.VERTICAL 
● GridBagLayout.BOTH 
8. Interfaces 28/Mayo/2012 gráficas con Swing 29
GridBagConstraints 
● Atributos públicos: 
● int anchor 
8. Interfaces 28/Mayo/2012 gráficas con Swing 30
GridBagConstraints 
● Atributos públicos: 
● Insets insets 
insets = new Insets(10, 20, 10, 20) 
8. Interfaces 28/Mayo/2012 gráficas con Swing 31
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 28/Mayo/2012 gráficas con Swing 32
Constructores de interfaces 
● Permiten construir interfaces de usuario 
interactivamente. 
● Ejemplo: Netbeans (netbeans.org) 
8. Interfaces 28/Mayo/2012 gráficas con Swing 33
Contenidos 
● Ventanas 
● Componentes 
● Layout Managers 
● Manejo de eventos 
● Cuadros de diálogo predefinidos 
● Dibujo de gráficos 
● Arquitectura MVC 
8. Interfaces 28/Mayo/2012 gráficas con Swing 34
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 28/Mayo/2012 gráficas con Swing 35
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 28/Mayo/2012 gráficas con Swing 36
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. 
public class Manejador implements ActionListener { 
public void actionPerformed(ActionEvent e) { 
... 
} 
} 
Información sobre 
el evento 
● Métodos de ActionEvent: 
● public Object getSource() 
● public int getModifiers() 
8. Interfaces 28/Mayo/2012 gráficas con Swing 37
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 28/Mayo/2012 gráficas con Swing 38
Ejemplo 
public class EventoBotonPulsado implements ActionListener { 
public void actionPerformed(ActionEvent e) { 
System.out.println(“¡Gracias!”); 
} 
} 
8. Interfaces 28/Mayo/2012 gráficas con Swing 39
Ejemplo 
public class EventoBotonPulsado implements ActionListener { 
public void actionPerformed(ActionEvent e) { 
JButton boton = (JButton) e.getSource(); 
boton.setText("¡Gracias!"); 
} 
} 
8. Interfaces 28/Mayo/2012 gráficas con Swing 40
Acceso a componentes de la interfaz 
8. Interfaces 28/Mayo/2012 gráficas con Swing 41
Acceso a componentes de la interfaz 
public class EventoSaludo implements ActionListener { 
public void actionPerformed(ActionEvent e) { 
} 
} 
? 
● ¿Cómo accedo al objeto JTextField? 
8. Interfaces 28/Mayo/2012 gráficas con Swing 42
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 28/Mayo/2012 gráficas con Swing 43
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 28/Mayo/2012 gráficas con Swing 44
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 28/Mayo/2012 gráficas con Swing 45
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 28/Mayo/2012 gráficas con Swing 46
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 28/Mayo/2012 gráficas con Swing 47
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 28/Mayo/2012 gráficas con Swing 48
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 28/Mayo/2012 gráficas con Swing 49
Contenidos 
● Ventanas 
● Componentes 
● Layout Managers 
● Manejo de eventos 
● Cuadros de diálogo predefinidos 
● Dibujo de gráficos 
● Arquitectura MVC 
8. Interfaces 28/Mayo/2012 gráficas con Swing 50
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 28/Mayo/2012 gráficas con Swing 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. 
● String showInputDialog(Component padre, 
Object mensaje, Object valorDefecto) 
8. Interfaces 28/Mayo/2012 gráficas con Swing 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. 
● int showConfirmDialog(Component padre, 
Object mensaje, String titulo, 
int tipoOpciones, int tipoMensaje) 
8. Interfaces 28/Mayo/2012 gráficas con Swing 53
Contenidos 
● Ventanas 
● Componentes 
● Layout Managers 
● Manejo de eventos 
● Cuadros de diálogo predefinidos 
● Dibujo de gráficos 
● Arquitectura MVC 
8. Interfaces 28/Mayo/2012 gráficas con Swing 54
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 28/Mayo/2012 gráficas con Swing 55
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 28/Mayo/2012 gráficas con Swing 56
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 28/Mayo/2012 gráficas con Swing 57
Ejemplo 
public class VentanaSol extends JFrame { 
public VentanaSol() { 
… 
Container cp = getContentPane(); 
cp.add(new PanelSol()); 
} 
} 
8. Interfaces 28/Mayo/2012 gráficas con Swing 58
Aún hay más 
http://download.java.net/javadesktop/swingset3/SwingSet3.jnlp 
8. Interfaces 28/Mayo/2012 gráficas con Swing 59
Aún hay más 
http://www.particle.kth.se/~fmi/kurs/PhysicsSimulation/Lectures/07A/swingDesign.html 
8. Interfaces 28/Mayo/2012 gráficas con Swing 60
Contenidos 
● Ventanas 
● Componentes 
● Layout Managers 
● Manejo de eventos 
● Cuadros de diálogo predefinidos 
● Dibujo de gráficos 
● Arquitectura MVC 
8. Interfaces 28/Mayo/2012 gráficas con Swing 61
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. 
Controlador 
Vista MMooddeelloo 
8. Interfaces 28/Mayo/2012 gráficas con Swing 62
Arquitectura MVC 
● Ejemplo: Edición de textos. 
Controlador 
class JTextField 
Vista MMooddeelloo 
class JTextField interfaz Document 
“Mi Texto” 
8. Interfaces 28/Mayo/2012 gráficas con Swing 63
Arquitectura MVC 
● Ejemplo: Listas 
Controlador 
Vista MMooddeelloo 
class JList interfaz ListModel 
{“MetaSystems”, Color.RED}, 
{“MetaWorks”, Color.BLUE}, 
… 
8. Interfaces 28/Mayo/2012 gráficas con Swing 64
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. 
Controlador 
Vista MMooddeelloo 
8. Interfaces 28/Mayo/2012 gráficas con Swing 65
Arquitectura MVC 
● Paso 1: Cuando el controlador recibe la acción 
del usuario, envía un mensaje al modelo para 
modificarlo. 
Controlador 
Vista MMooddeelloo 
8. Interfaces 28/Mayo/2012 gráficas con Swing 66
Arquitectura MVC 
● Paso 2: Cuando el modelo se modifica, envía 
un mensaje a todas las vistas que tenga 
registradas. 
Controlador 
Vista MMooddeelloo 
8. Interfaces 28/Mayo/2012 gráficas con Swing 67
Arquitectura MVC 
● Paso 3: La vista se actualiza con los cambios 
realizados en el modelo 
Controlador 
Vista MMooddeelloo 
8. Interfaces 28/Mayo/2012 gráficas con Swing 68
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 
8. Interfaces 28/Mayo/2012 gráficas con Swing 69

Más contenido relacionado

La actualidad más candente

Swing
SwingSwing
SwingEPN
 
Guis en java-1pp_2012_
Guis en java-1pp_2012_Guis en java-1pp_2012_
Guis en java-1pp_2012_Robert Wolf
 
Introducción a Swing
Introducción a SwingIntroducción a Swing
Introducción a Swingmrojas_unitec
 
Java - Tutorial Ventanas
Java - Tutorial VentanasJava - Tutorial Ventanas
Java - Tutorial Ventanaselsemieni
 
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.
 
Interfaz gráfica de usuario
Interfaz gráfica de usuarioInterfaz gráfica de usuario
Interfaz gráfica de usuarioaleja0940
 
Contenedores Swing en Netbeans
Contenedores Swing en NetbeansContenedores Swing en Netbeans
Contenedores Swing en NetbeansMarly Encina
 
2012 interfaz grafica en guide matlab
2012 interfaz grafica en guide matlab2012 interfaz grafica en guide matlab
2012 interfaz grafica en guide matlabCarlos Yagamy
 
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
 
GUI EN MATLAB MODULACION PULSO UNICO
GUI EN MATLAB MODULACION PULSO UNICOGUI EN MATLAB MODULACION PULSO UNICO
GUI EN MATLAB MODULACION PULSO UNICOCristhian Fernandez
 

La actualidad más candente (19)

Swing
SwingSwing
Swing
 
Sesion12-componentes Visuales java
Sesion12-componentes Visuales javaSesion12-componentes Visuales java
Sesion12-componentes Visuales java
 
Guis en java-1pp_2012_
Guis en java-1pp_2012_Guis en java-1pp_2012_
Guis en java-1pp_2012_
 
Introducción a Swing
Introducción a SwingIntroducción a Swing
Introducción a Swing
 
Java - Tutorial Ventanas
Java - Tutorial VentanasJava - Tutorial Ventanas
Java - Tutorial Ventanas
 
Java GUI La librería Swing
Java GUI La librería Swing Java GUI La librería Swing
Java GUI La librería Swing
 
Flow layout
Flow layoutFlow layout
Flow layout
 
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)
 
Sesion12-Componentes AWT
Sesion12-Componentes AWTSesion12-Componentes AWT
Sesion12-Componentes AWT
 
Swing intefaz grafica de usuario
Swing intefaz grafica de usuarioSwing intefaz grafica de usuario
Swing intefaz grafica de usuario
 
Interfaz gráfica de usuario
Interfaz gráfica de usuarioInterfaz gráfica de usuario
Interfaz gráfica de usuario
 
Layout
LayoutLayout
Layout
 
Contenedores Swing en Netbeans
Contenedores Swing en NetbeansContenedores Swing en Netbeans
Contenedores Swing en Netbeans
 
Clase 5 JAVA 2012
Clase 5 JAVA 2012Clase 5 JAVA 2012
Clase 5 JAVA 2012
 
2012 interfaz grafica en guide matlab
2012 interfaz grafica en guide matlab2012 interfaz grafica en guide matlab
2012 interfaz grafica en guide matlab
 
Swing
SwingSwing
Swing
 
Guide
GuideGuide
Guide
 
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
 
GUI EN MATLAB MODULACION PULSO UNICO
GUI EN MATLAB MODULACION PULSO UNICOGUI EN MATLAB MODULACION PULSO UNICO
GUI EN MATLAB MODULACION PULSO UNICO
 

Destacado

Creación de archivos de clases en c#
Creación de archivos de clases en c#Creación de archivos de clases en c#
Creación de archivos de clases en c#UVM
 
Objetos y arreglos en C#
Objetos y arreglos en C#Objetos y arreglos en C#
Objetos y arreglos en C#UVM
 
09 Clases Abstractas E Interfaces
09   Clases Abstractas E Interfaces09   Clases Abstractas E Interfaces
09 Clases Abstractas E InterfacesNetwork Sens
 
Lenguaje de programacion c#
Lenguaje de programacion c#Lenguaje de programacion c#
Lenguaje de programacion c#XM Filial de ISA
 
Core java by a introduction sandesh sharma
Core java by a introduction sandesh sharmaCore java by a introduction sandesh sharma
Core java by a introduction sandesh sharmaSandesh Sharma
 
Metodos Constructor Y Destructor
Metodos Constructor Y DestructorMetodos Constructor Y Destructor
Metodos Constructor Y Destructorrezzaca
 
Grafos avanzado
Grafos avanzadoGrafos avanzado
Grafos avanzadomenamigue
 
Estructuras de datos y algoritmos
Estructuras de datos y algoritmosEstructuras de datos y algoritmos
Estructuras de datos y algoritmosRobert Rodriguez
 
Introducción a la programación y la informática. Tema 10
Introducción a la programación y la informática. Tema 10Introducción a la programación y la informática. Tema 10
Introducción a la programación y la informática. Tema 10Andres Garcia Garcia
 
Tipos abstractos de datos
Tipos abstractos de datosTipos abstractos de datos
Tipos abstractos de datosJose Armando
 

Destacado (20)

Introduccion a Java
Introduccion a JavaIntroduccion a Java
Introduccion a Java
 
Creación de archivos de clases en c#
Creación de archivos de clases en c#Creación de archivos de clases en c#
Creación de archivos de clases en c#
 
Objetos y arreglos en C#
Objetos y arreglos en C#Objetos y arreglos en C#
Objetos y arreglos en C#
 
09 Clases Abstractas E Interfaces
09   Clases Abstractas E Interfaces09   Clases Abstractas E Interfaces
09 Clases Abstractas E Interfaces
 
C sharp fundamentos
C sharp fundamentosC sharp fundamentos
C sharp fundamentos
 
Lenguaje de programacion c#
Lenguaje de programacion c#Lenguaje de programacion c#
Lenguaje de programacion c#
 
Core java by a introduction sandesh sharma
Core java by a introduction sandesh sharmaCore java by a introduction sandesh sharma
Core java by a introduction sandesh sharma
 
Metodos Constructor Y Destructor
Metodos Constructor Y DestructorMetodos Constructor Y Destructor
Metodos Constructor Y Destructor
 
Tipos Primitivos y Elementos Léxicos de Java
Tipos Primitivos y Elementos Léxicos de JavaTipos Primitivos y Elementos Léxicos de Java
Tipos Primitivos y Elementos Léxicos de Java
 
Estructuras de datos
Estructuras de datosEstructuras de datos
Estructuras de datos
 
1. teoría listas enlazadas
1. teoría listas enlazadas1. teoría listas enlazadas
1. teoría listas enlazadas
 
Pilas en Java
Pilas en JavaPilas en Java
Pilas en Java
 
Grafos avanzado
Grafos avanzadoGrafos avanzado
Grafos avanzado
 
Estructuras de datos y algoritmos
Estructuras de datos y algoritmosEstructuras de datos y algoritmos
Estructuras de datos y algoritmos
 
Introducción a la programación y la informática. Tema 10
Introducción a la programación y la informática. Tema 10Introducción a la programación y la informática. Tema 10
Introducción a la programación y la informática. Tema 10
 
Taller 1 3
Taller 1 3Taller 1 3
Taller 1 3
 
áRboles binarios
áRboles binariosáRboles binarios
áRboles binarios
 
Listas enlazadas
Listas enlazadasListas enlazadas
Listas enlazadas
 
Tipos abstractos de datos
Tipos abstractos de datosTipos abstractos de datos
Tipos abstractos de datos
 
Interfaz java y arduino
Interfaz java y arduinoInterfaz java y arduino
Interfaz java y arduino
 

Similar a Swing interfaces gráficas Java (20)

ventanas swing en java
ventanas swing en javaventanas swing en java
ventanas swing en java
 
Swing
SwingSwing
Swing
 
Swing
SwingSwing
Swing
 
Swing
SwingSwing
Swing
 
Swing.pptx
Swing.pptxSwing.pptx
Swing.pptx
 
Java tema06a
Java tema06aJava tema06a
Java tema06a
 
S5-P2.pptx
S5-P2.pptxS5-P2.pptx
S5-P2.pptx
 
S5 p2
S5 p2S5 p2
S5 p2
 
Vbr Awt 01
Vbr Awt 01Vbr Awt 01
Vbr Awt 01
 
GWT
GWTGWT
GWT
 
1TAP Tema 1-GUI.pptx
1TAP Tema 1-GUI.pptx1TAP Tema 1-GUI.pptx
1TAP Tema 1-GUI.pptx
 
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
 
Actividad 4 presentacion multimedia modulo 4
Actividad 4 presentacion multimedia modulo 4Actividad 4 presentacion multimedia modulo 4
Actividad 4 presentacion multimedia modulo 4
 
Calculadora Gráfica Java implementando el Patrón MVC
Calculadora Gráfica Java implementando el Patrón MVCCalculadora Gráfica Java implementando el Patrón MVC
Calculadora Gráfica Java implementando el Patrón MVC
 
Tema6resumido
Tema6resumidoTema6resumido
Tema6resumido
 
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
 
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
 
Programacion_II_Interfaz_grafica_guia_I
Programacion_II_Interfaz_grafica_guia_IProgramacion_II_Interfaz_grafica_guia_I
Programacion_II_Interfaz_grafica_guia_I
 
Interfaces Usuario 3
Interfaces Usuario 3Interfaces Usuario 3
Interfaces Usuario 3
 
Gu is awt_swing
Gu is awt_swingGu is awt_swing
Gu is awt_swing
 

Más 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
 

Más 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

Europa y la Exploración del continente americano.pptx
Europa y la Exploración del continente americano.pptxEuropa y la Exploración del continente americano.pptx
Europa y la Exploración del continente americano.pptxismaelchandi2010
 
la configuyracion del territorio peruano
la configuyracion del territorio peruanola configuyracion del territorio peruano
la configuyracion del territorio peruanoEFRAINSALAZARLOYOLA1
 
BIOGRAFIA MARIANO MELGAR presentacion en power point
BIOGRAFIA MARIANO MELGAR  presentacion en power pointBIOGRAFIA MARIANO MELGAR  presentacion en power point
BIOGRAFIA MARIANO MELGAR presentacion en power pointyupanquihuisahilario
 
PA2_BITACORA _Taipe_Turpo_Teves_Sumire_Suma.pptx
PA2_BITACORA _Taipe_Turpo_Teves_Sumire_Suma.pptxPA2_BITACORA _Taipe_Turpo_Teves_Sumire_Suma.pptx
PA2_BITACORA _Taipe_Turpo_Teves_Sumire_Suma.pptxJOELORELLANA15
 
Origen del Hombre- cuadro comparativo 5to Sec
Origen del Hombre- cuadro comparativo 5to SecOrigen del Hombre- cuadro comparativo 5to Sec
Origen del Hombre- cuadro comparativo 5to Secssuser50da781
 
presentacion-auditoria-administrativa-i-encuentro (1).ppt
presentacion-auditoria-administrativa-i-encuentro (1).pptpresentacion-auditoria-administrativa-i-encuentro (1).ppt
presentacion-auditoria-administrativa-i-encuentro (1).pptDerekLiberatoMartine
 
CERTIFICADO para NIÑOS, presentacion de niños en la iglesia .pptx
CERTIFICADO para NIÑOS, presentacion de niños en la iglesia .pptxCERTIFICADO para NIÑOS, presentacion de niños en la iglesia .pptx
CERTIFICADO para NIÑOS, presentacion de niños en la iglesia .pptxMaikelPereira1
 
Concepto de Estética, aproximación,Elena Olvieras
Concepto de Estética, aproximación,Elena OlvierasConcepto de Estética, aproximación,Elena Olvieras
Concepto de Estética, aproximación,Elena OlvierasAnkara2
 
SEMIOLOGIA DE CABEZA Y CUELLO. Medicina Semiologia cabeza y cuellopptx
SEMIOLOGIA DE CABEZA Y CUELLO. Medicina Semiologia cabeza y cuellopptxSEMIOLOGIA DE CABEZA Y CUELLO. Medicina Semiologia cabeza y cuellopptx
SEMIOLOGIA DE CABEZA Y CUELLO. Medicina Semiologia cabeza y cuellopptxLisetteChuquisea
 
Supremacia de la Constitucion 2024.pptxm
Supremacia de la Constitucion 2024.pptxmSupremacia de la Constitucion 2024.pptxm
Supremacia de la Constitucion 2024.pptxmolivayasser2
 
271706433-Horacio-Baliero-Casa-en-Punta-Piedras.pptx
271706433-Horacio-Baliero-Casa-en-Punta-Piedras.pptx271706433-Horacio-Baliero-Casa-en-Punta-Piedras.pptx
271706433-Horacio-Baliero-Casa-en-Punta-Piedras.pptxjezuz1231
 
Unitario - Serie Fotográfica - Emmanuel Toloza Pineda
Unitario - Serie Fotográfica - Emmanuel Toloza PinedaUnitario - Serie Fotográfica - Emmanuel Toloza Pineda
Unitario - Serie Fotográfica - Emmanuel Toloza PinedaEmmanuel Toloza
 
Arribando a la concreción II. Títulos en inglés, alemán y español
Arribando a la concreción II. Títulos en inglés, alemán y españolArribando a la concreción II. Títulos en inglés, alemán y español
Arribando a la concreción II. Títulos en inglés, alemán y españolLuis José Ferreira Calvo
 
diagrama sinóptico dcerfghjsxdcfvgbhnjdcf
diagrama sinóptico dcerfghjsxdcfvgbhnjdcfdiagrama sinóptico dcerfghjsxdcfvgbhnjdcf
diagrama sinóptico dcerfghjsxdcfvgbhnjdcfDreydyAvila
 
ACUERDOS PARA PINTAR EDUCACION INICIAL.docx
ACUERDOS PARA PINTAR EDUCACION INICIAL.docxACUERDOS PARA PINTAR EDUCACION INICIAL.docx
ACUERDOS PARA PINTAR EDUCACION INICIAL.docxlizeth753950
 
LAVADO DE MANOS TRIPTICO modelos de.docx
LAVADO DE MANOS TRIPTICO modelos de.docxLAVADO DE MANOS TRIPTICO modelos de.docx
LAVADO DE MANOS TRIPTICO modelos de.docxJheissonAriasSalazar
 

Último (16)

Europa y la Exploración del continente americano.pptx
Europa y la Exploración del continente americano.pptxEuropa y la Exploración del continente americano.pptx
Europa y la Exploración del continente americano.pptx
 
la configuyracion del territorio peruano
la configuyracion del territorio peruanola configuyracion del territorio peruano
la configuyracion del territorio peruano
 
BIOGRAFIA MARIANO MELGAR presentacion en power point
BIOGRAFIA MARIANO MELGAR  presentacion en power pointBIOGRAFIA MARIANO MELGAR  presentacion en power point
BIOGRAFIA MARIANO MELGAR presentacion en power point
 
PA2_BITACORA _Taipe_Turpo_Teves_Sumire_Suma.pptx
PA2_BITACORA _Taipe_Turpo_Teves_Sumire_Suma.pptxPA2_BITACORA _Taipe_Turpo_Teves_Sumire_Suma.pptx
PA2_BITACORA _Taipe_Turpo_Teves_Sumire_Suma.pptx
 
Origen del Hombre- cuadro comparativo 5to Sec
Origen del Hombre- cuadro comparativo 5to SecOrigen del Hombre- cuadro comparativo 5to Sec
Origen del Hombre- cuadro comparativo 5to Sec
 
presentacion-auditoria-administrativa-i-encuentro (1).ppt
presentacion-auditoria-administrativa-i-encuentro (1).pptpresentacion-auditoria-administrativa-i-encuentro (1).ppt
presentacion-auditoria-administrativa-i-encuentro (1).ppt
 
CERTIFICADO para NIÑOS, presentacion de niños en la iglesia .pptx
CERTIFICADO para NIÑOS, presentacion de niños en la iglesia .pptxCERTIFICADO para NIÑOS, presentacion de niños en la iglesia .pptx
CERTIFICADO para NIÑOS, presentacion de niños en la iglesia .pptx
 
Concepto de Estética, aproximación,Elena Olvieras
Concepto de Estética, aproximación,Elena OlvierasConcepto de Estética, aproximación,Elena Olvieras
Concepto de Estética, aproximación,Elena Olvieras
 
SEMIOLOGIA DE CABEZA Y CUELLO. Medicina Semiologia cabeza y cuellopptx
SEMIOLOGIA DE CABEZA Y CUELLO. Medicina Semiologia cabeza y cuellopptxSEMIOLOGIA DE CABEZA Y CUELLO. Medicina Semiologia cabeza y cuellopptx
SEMIOLOGIA DE CABEZA Y CUELLO. Medicina Semiologia cabeza y cuellopptx
 
Supremacia de la Constitucion 2024.pptxm
Supremacia de la Constitucion 2024.pptxmSupremacia de la Constitucion 2024.pptxm
Supremacia de la Constitucion 2024.pptxm
 
271706433-Horacio-Baliero-Casa-en-Punta-Piedras.pptx
271706433-Horacio-Baliero-Casa-en-Punta-Piedras.pptx271706433-Horacio-Baliero-Casa-en-Punta-Piedras.pptx
271706433-Horacio-Baliero-Casa-en-Punta-Piedras.pptx
 
Unitario - Serie Fotográfica - Emmanuel Toloza Pineda
Unitario - Serie Fotográfica - Emmanuel Toloza PinedaUnitario - Serie Fotográfica - Emmanuel Toloza Pineda
Unitario - Serie Fotográfica - Emmanuel Toloza Pineda
 
Arribando a la concreción II. Títulos en inglés, alemán y español
Arribando a la concreción II. Títulos en inglés, alemán y españolArribando a la concreción II. Títulos en inglés, alemán y español
Arribando a la concreción II. Títulos en inglés, alemán y español
 
diagrama sinóptico dcerfghjsxdcfvgbhnjdcf
diagrama sinóptico dcerfghjsxdcfvgbhnjdcfdiagrama sinóptico dcerfghjsxdcfvgbhnjdcf
diagrama sinóptico dcerfghjsxdcfvgbhnjdcf
 
ACUERDOS PARA PINTAR EDUCACION INICIAL.docx
ACUERDOS PARA PINTAR EDUCACION INICIAL.docxACUERDOS PARA PINTAR EDUCACION INICIAL.docx
ACUERDOS PARA PINTAR EDUCACION INICIAL.docx
 
LAVADO DE MANOS TRIPTICO modelos de.docx
LAVADO DE MANOS TRIPTICO modelos de.docxLAVADO DE MANOS TRIPTICO modelos de.docx
LAVADO DE MANOS TRIPTICO modelos de.docx
 

Swing interfaces gráficas Java

  • 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. 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 28/Mayo/2012 gráficas con Swing 2
  • 3. Contenidos ● Ventanas ● Componentes ● Layout Managers ● Manejo de eventos ● Cuadros de diálogo predefinidos ● Dibujo de gráficos ● Arquitectura MVC 8. Interfaces 28/Mayo/2012 gráficas con Swing 3
  • 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 28/Mayo/2012 gráficas con Swing 4
  • 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 28/Mayo/2012 gráficas con Swing 5
  • 6. Creación de ventanas 8. Interfaces 28/Mayo/2012 gráficas con Swing 6
  • 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 28/Mayo/2012 gráficas con Swing 7
  • 8. Contenidos ● Ventanas ● Componentes ● Layout Managers ● Manejo de eventos ● Cuadros de diálogo predefinidos ● Dibujo de gráficos ● Arquitectura MVC 8. Interfaces 28/Mayo/2012 gráficas con Swing 8
  • 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 28/Mayo/2012 gráficas con Swing 9
  • 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 28/Mayo/2012 gráficas con Swing 10
  • 11. Añadir componentes 8. Interfaces 28/Mayo/2012 gráficas con Swing 11
  • 12. Contenidos ● Ventanas ● Componentes ● Layout Managers ● Manejo de eventos ● Cuadros de diálogo predefinidos ● Dibujo de gráficos ● Arquitectura MVC 8. Interfaces 28/Mayo/2012 gráficas con Swing 12
  • 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 28/Mayo/2012 gráficas con Swing 13
  • 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 28/Mayo/2012 gráficas con Swing 14
  • 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 28/Mayo/2012 gráficas con Swing 15
  • 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 28/Mayo/2012 gráficas con Swing 16
  • 17. GridLayout 8. Interfaces 28/Mayo/2012 gráficas con Swing 17
  • 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 28/Mayo/2012 gráficas con Swing 18
  • 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 28/Mayo/2012 gráficas con Swing 19
  • 20. Interfaces complejas: JPanel 8. Interfaces 28/Mayo/2012 gráficas con Swing 20
  • 21. Interfaces complejas: JPanel GridLayout FlowLayout FlowLayout 8. Interfaces 28/Mayo/2012 gráficas con Swing 21
  • 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 28/Mayo/2012 gráficas con Swing 22
  • 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 28/Mayo/2012 gráficas con Swing 23
  • 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 28/Mayo/2012 gráficas con Swing 24
  • 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 28/Mayo/2012 gráficas con Swing 25
  • 26. GridBagConstraints ● Atributos públicos: ● int gridx, gridy 8. Interfaces 28/Mayo/2012 gráficas con Swing 26
  • 27. GridBagConstraints ● Atributos públicos: ● int gridwidth, gridheight gridheight = 2 gridwidth = 2 8. Interfaces 28/Mayo/2012 gráficas con Swing 27
  • 28. GridBagConstraints ● Atributos públicos: ● double weightx, weighty weightx = 1.0 weightx = 0.0 8. Interfaces 28/Mayo/2012 gráficas con Swing 28
  • 29. GridBagConstraints ● Atributos públicos: ● int fill ● Puede ser: ● GridBagLayout.HORIZONTAL ● GridBagLayout.VERTICAL ● GridBagLayout.BOTH 8. Interfaces 28/Mayo/2012 gráficas con Swing 29
  • 30. GridBagConstraints ● Atributos públicos: ● int anchor 8. Interfaces 28/Mayo/2012 gráficas con Swing 30
  • 31. GridBagConstraints ● Atributos públicos: ● Insets insets insets = new Insets(10, 20, 10, 20) 8. Interfaces 28/Mayo/2012 gráficas con Swing 31
  • 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 28/Mayo/2012 gráficas con Swing 32
  • 33. Constructores de interfaces ● Permiten construir interfaces de usuario interactivamente. ● Ejemplo: Netbeans (netbeans.org) 8. Interfaces 28/Mayo/2012 gráficas con Swing 33
  • 34. Contenidos ● Ventanas ● Componentes ● Layout Managers ● Manejo de eventos ● Cuadros de diálogo predefinidos ● Dibujo de gráficos ● Arquitectura MVC 8. Interfaces 28/Mayo/2012 gráficas con Swing 34
  • 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 28/Mayo/2012 gráficas con Swing 35
  • 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 28/Mayo/2012 gráficas con Swing 36
  • 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. public class Manejador implements ActionListener { public void actionPerformed(ActionEvent e) { ... } } Información sobre el evento ● Métodos de ActionEvent: ● public Object getSource() ● public int getModifiers() 8. Interfaces 28/Mayo/2012 gráficas con Swing 37
  • 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 28/Mayo/2012 gráficas con Swing 38
  • 39. Ejemplo public class EventoBotonPulsado implements ActionListener { public void actionPerformed(ActionEvent e) { System.out.println(“¡Gracias!”); } } 8. Interfaces 28/Mayo/2012 gráficas con Swing 39
  • 40. Ejemplo public class EventoBotonPulsado implements ActionListener { public void actionPerformed(ActionEvent e) { JButton boton = (JButton) e.getSource(); boton.setText("¡Gracias!"); } } 8. Interfaces 28/Mayo/2012 gráficas con Swing 40
  • 41. Acceso a componentes de la interfaz 8. Interfaces 28/Mayo/2012 gráficas con Swing 41
  • 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 28/Mayo/2012 gráficas con Swing 42
  • 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 28/Mayo/2012 gráficas con Swing 43
  • 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 28/Mayo/2012 gráficas con Swing 44
  • 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 28/Mayo/2012 gráficas con Swing 45
  • 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 28/Mayo/2012 gráficas con Swing 46
  • 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 28/Mayo/2012 gráficas con Swing 47
  • 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 28/Mayo/2012 gráficas con Swing 48
  • 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 28/Mayo/2012 gráficas con Swing 49
  • 50. Contenidos ● Ventanas ● Componentes ● Layout Managers ● Manejo de eventos ● Cuadros de diálogo predefinidos ● Dibujo de gráficos ● Arquitectura MVC 8. Interfaces 28/Mayo/2012 gráficas con Swing 50
  • 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 28/Mayo/2012 gráficas con Swing 51
  • 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 28/Mayo/2012 gráficas con Swing 52
  • 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 28/Mayo/2012 gráficas con Swing 53
  • 54. Contenidos ● Ventanas ● Componentes ● Layout Managers ● Manejo de eventos ● Cuadros de diálogo predefinidos ● Dibujo de gráficos ● Arquitectura MVC 8. Interfaces 28/Mayo/2012 gráficas con Swing 54
  • 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 28/Mayo/2012 gráficas con Swing 55
  • 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 28/Mayo/2012 gráficas con Swing 56
  • 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 28/Mayo/2012 gráficas con Swing 57
  • 58. Ejemplo public class VentanaSol extends JFrame { public VentanaSol() { … Container cp = getContentPane(); cp.add(new PanelSol()); } } 8. Interfaces 28/Mayo/2012 gráficas con Swing 58
  • 59. Aún hay más http://download.java.net/javadesktop/swingset3/SwingSet3.jnlp 8. Interfaces 28/Mayo/2012 gráficas con Swing 59
  • 60. Aún hay más http://www.particle.kth.se/~fmi/kurs/PhysicsSimulation/Lectures/07A/swingDesign.html 8. Interfaces 28/Mayo/2012 gráficas con Swing 60
  • 61. Contenidos ● Ventanas ● Componentes ● Layout Managers ● Manejo de eventos ● Cuadros de diálogo predefinidos ● Dibujo de gráficos ● Arquitectura MVC 8. Interfaces 28/Mayo/2012 gráficas con Swing 61
  • 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. Controlador Vista MMooddeelloo 8. Interfaces 28/Mayo/2012 gráficas con Swing 62
  • 63. Arquitectura MVC ● Ejemplo: Edición de textos. Controlador class JTextField Vista MMooddeelloo class JTextField interfaz Document “Mi Texto” 8. Interfaces 28/Mayo/2012 gráficas con Swing 63
  • 64. Arquitectura MVC ● Ejemplo: Listas Controlador Vista MMooddeelloo class JList interfaz ListModel {“MetaSystems”, Color.RED}, {“MetaWorks”, Color.BLUE}, … 8. Interfaces 28/Mayo/2012 gráficas con Swing 64
  • 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. Controlador Vista MMooddeelloo 8. Interfaces 28/Mayo/2012 gráficas con Swing 65
  • 66. Arquitectura MVC ● Paso 1: Cuando el controlador recibe la acción del usuario, envía un mensaje al modelo para modificarlo. Controlador Vista MMooddeelloo 8. Interfaces 28/Mayo/2012 gráficas con Swing 66
  • 67. Arquitectura MVC ● Paso 2: Cuando el modelo se modifica, envía un mensaje a todas las vistas que tenga registradas. Controlador Vista MMooddeelloo 8. Interfaces 28/Mayo/2012 gráficas con Swing 67
  • 68. Arquitectura MVC ● Paso 3: La vista se actualiza con los cambios realizados en el modelo Controlador Vista MMooddeelloo 8. Interfaces 28/Mayo/2012 gráficas con Swing 68
  • 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 8. Interfaces 28/Mayo/2012 gráficas con Swing 69