SlideShare uma empresa Scribd logo
1 de 53
Java GUI La librería Swing
Programación conducida por eventos  En programas tradicionales (basados en texto):      el programa controla el flujo de la ejecución      el programa controla la secuencia de las entradas  Los programas con GUI son “event-driven”      la secuencia de las entradas controlan el flujo de la       ejecución  el sistema invoca código del usuario
Programación conducida por eventos Código del sistema Su código
Generación de eventos Las acciones tales como: pulsar un botón, mover el mouse, etc. son reconocidas e identificadas por los sistemas operativos (OS) o la JVM. 2. Por cada acción el OS/JVM determinan cuál de los     programas que se están ejecutando recibirán la señal (de la acción). 3. Las señales que la aplicaciones reciben del OS/JVM como resultado de una acción son llamadas eventos.
Generación de eventos GUI Acciones Mouse, Teclado,etc. Sistema Operativo JAVA API /Windows Eventos Métodos Métodos Aplicación 1 Aplicación 2
Manejo de eventos  Una aplicación responde a los eventos ejecutando código adecuado para cada tipo particular de eventos.  No todos los eventos necesitan ser tenidos en cuenta poruna aplicación. Por ejemplo: Una aplicación para dibujar puede estar interesada sólo en movimientos del mouse.  Como diseñador de una aplicación manejada por eventos,  deberá escribir clases/métodos para manejar los eventos  relevantes.
Java GUI  Java provee dos librerías para crear GUIs:      Java AWT (Abstract Window Toolkit)      Java Foundation Classes (JFC o Swing), a partirde Java2
Java Foundation Classes  JFC es una colección muy grande de software.  AWT y Swing son las dosgrandes familias para desarrollo de GUI en  el entorno Java.   Swing AWT Drag & Drop 2D API JFC APIs Accessibility
Java Foundation Classes
Swing  Implementada sin usar código nativo (100% Java),  con lo cual la GUI se verá de la misma forma  en distintas plataformas.  Basada en la arquitectura MVC.  Ofrece una amplia variedad de Look & Feel.  Los componentes de Swing continuarán siendo  mejorados en el futuro.
AWT y Swing  Los componentes de Swing tienen nombres que  comienzan con J.  Ejemplo: Button en AWT es JButton en Swing  Los componentes de AWT están en el paquete   java.awt, los de Swing en javax.swing.  import javax.swing.*;  import java.awt.*;  import java.awt.event.*;
Paquetes JFC/Swing ,[object Object]
javax.swing.table
javax.swing.tree
javax.swing.border
javax.swing.colorchooser
javax.swing.filechooser
javax.swing.event
javax.swing.undo
javax.swing.plaf
javax.swing.plaf.basic
javax.swing.plaf.metal
javax.swing.plaf.multi
javax.swing.text
javax.swing.text.html
javax.swing.text.html.parser
javax.swing.text.rtf,[object Object]
Aplicaciones basadas en GUI  El desarrollo de una aplicación basada en GUI requiere la comprensión de:     Estructura de la jerarquía de herencia, que define el comportamiento y atributos de los componentes en la GUI de la aplicación.     Estructura de la jerarquía de contenedores,que      define cómo se disponen todos los componentes en la GUI de la aplicación.      Manejo de eventos.
Jerarquía de Herencia
Contenedores en Swing
Similar a AWT
Componentes de Swing  La clase Component (y sus subclases) proveen soporte  para manejo de eventos, cambio del tamaño de un componente, control de color y fuentes, pintado.  Un componente es un objeto de una subclase concreta. Se distinguen dos clases de componentes:  Componentes de control de la GUI: la interacción de la GUI con el usuario  se realiza a través de ellos.     Contenedores: contienen otros componentes (u otros      contenedores).
Contenedores  Anidamiento de componentes (Jerarquía de contenedores en contraste con la Jerarquía de herencia). Cada  programa Swing contiene al menos una.   Swing provee 4 contenedores de alto nivel (ventana   base de la GUI):  JFrame, JApplet, JDialog y JWindow.  La jerarquía está compuesta de diferentes capas.   Cada contenedor de alto nivel contiene un contenedor  intermedio conocido como “contentpane”.En casi todos  los programas no es necesario conocer qué hay entre el contenedor de alto nivel y el contentpane.
Jerarquía de contenedores
Ejemplo importjavax.swing.JFrame; importjavax.swing.JPanel; importjava.awt.Container; importjava.awt.Color; publicclass Ejemplo { publicstaticvoidmain(Stringargs[]){ //Se crea un objeto JPAnel de 300X300 y color rojo JPanelpanelRojo =new JPanel(); panelRojo.setBackground(Color.RED); panelRojo.setSize(300,300); //Se crea una ventana de 300X300 JFrame ventana=new JFrame("Prueba en rojo"); ventana.setLocation(100,100); ventana.setSize(300,300); ventana.setVisible(true); //Se coloca el JPanel en el contentpane ContainercontentPane=ventana.getContentPane(); contentPane.add(panelRojo); } }
Jerarquía de contenedores  La apariencia de una GUI está determinada por:      La jerarquía de contenedores      El Layout Manager de cada contenedor      Las propiedades de los componentes individuales  Todos estos ítems trabajan en conjunto para determinarel efecto visual final.
Estructura de un JFrame
Content Panes  Usualmente es un JPanel.  En la mayoría de las aplicaciones Swing contiene casi   todo, excepto la barra de menú.  Debe ser creado explícitamente.
Contenedores de alto nivel Applet      Dialog Frame
Contenedores generales Scroll Pane SplitPane Panel Toolbar TabbedPane
JFrame
Algunos métodos de JFrame  Para construir una ventana con un título y mostrarla:    JFrame theWindow = new JFrame( "Graffiti" );    theWindow.show( );    //idem theWindow.setVisible(true);  Para determinar su tamaño: theWindow.setJMenuBar(cyanMenuBar); theWindow.setSize( 220, 100 );//o mejor theWindow.pack();
Nueva funcionalidad de JFrame  setDefaultCloseOperation(int) es la másimportante:  DO_NOTHING_ON_CLOSE   HIDE_ON_CLOSE (default) oculta el frame cuandoel       usuario lo cierrapero no se deshace de los recursosdel       sistemaasociados (puedovolver a mostrar).  DISPOSE_ON_CLOSE oculta el frame y llama al método dispose(), paraliberarrecursos.   EXIT_ON_CLOSE, cierra la aplicación (System.exit(0))
Hello World en Swing importjavax.swing.*; importjava.awt.event.*; publicclassHolaMundo { publicstaticvoidmain(String[] args) { JFrameframe = new JFrame("HolaMundoSwing");         final JLabellabel = new JLabel("Hola Mundo"); frame.getContentPane().add(label);         //frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.addWindowListener(new java.awt.event.WindowAdapter(){ publicvoidwindowClosing(WindowEvent e){ System.exit(0);            }         }         ); frame.pack(); frame.setVisible(true);     } }
Componentes atómicos ,[object Object],[object Object]
Componentes atómicos no editables Tool tip Label Progress Bar
Otros componentes atómicos Color Chooser File Chooser Table Text Tree
API de los componentes GUI  Componente GUI en Java= class     Propiedades  Métodos     Eventos JButton
Componentes GUI  1.- Crear        Instanciar objeto: b = new JButton(“press me”); 2.- Configurar        Propiedades: b.text = “press me”;(evitar en Java)        Métodos:             b2 = new JButton("Middlebutton", middleButtonIcon);         b2.setVerticalTextPosition(AbstractButton.BOTTOM);           b2.setHorizontalTextPosition(AbstractButton.CENTER); b2.setMnemonic(KeyEvent.VK_M);           b2.setToolTipText("Thismiddlebuttondoesnothing “             + "whenyouclickit."); 3.- Añadir         panel.add(b); 4.- Manejar eventos
Características especiales  Los componentes Swing ofrecen características especiales:
Características especiales  Tool tips 	JButton button = new JButton ("Compute"); 	button.setToolTipText ("Calculate size.");  Mnemonic       button.setMnemonic ("C");  Disable       JButton button = new JButton (“Do It”); 	button.setEnabled (false);
import java.awt.*; importjava.awt.event.*; importjavax.swing.*; publicclassUnJBoton  {   public static void main(String args[]) { Frame f = new Frame(); JButton b = new JButton("Pulsame");       f.add(b); f.pack(); f.setVisible(true); b.addActionListener(new ActionListener() { publicvoidactionPerformed(ActionEvent e) { System.out.println("HOLA"); 	      } 	  });   } }
importjavax.swing.*; import java.awt.*; publicclass Botones extendsJButton { publicstaticvoidmain(String[] args) { JFrame f = new JFrame(); Iconicon  = new ImageIcon("b1.gif"); Iconiconp = new ImageIcon("b2.gif"); Iconiconr = new ImageIcon("b3.gif"); Iconicond = new ImageIcon("b4.gif"); JButton b1 = new JButton("Pulsame",icon); JButton b2 = new JButton("Pulsame",iconp); JButton b3 = new JButton("Pulsame",iconr); JButton b4 = new JButton("Pulsame",icon);         b1.setEnabled(false); 	b1.setDisabledIcon(icond); 	b1.setRolloverIcon(iconr); 	b1.setPressedIcon(iconp); Container c = f.getContentPane(); c.setLayout(new FlowLayout()); 	c.add(b1); 	c.add(b2); 	c.add(b3); 	c.add(b4); f.pack(); f.setVisible(true);     } }

Mais conteúdo relacionado

Mais procurados

Componentes de eclipse
Componentes de eclipseComponentes de eclipse
Componentes de eclipsejaquiiMc
 
Core java concepts
Core java  conceptsCore java  concepts
Core java conceptsRam132
 
Java - Packages Concepts
Java - Packages ConceptsJava - Packages Concepts
Java - Packages ConceptsVicter Paul
 
Caracteristicas de Java
Caracteristicas de JavaCaracteristicas de Java
Caracteristicas de JavaLuzRom
 
Collections In Java
Collections In JavaCollections In Java
Collections In JavaBinoj T E
 
Presentacion Java
Presentacion JavaPresentacion Java
Presentacion Javamaeusogo
 
Constructores en Java
Constructores en JavaConstructores en Java
Constructores en JavaUCE
 
Android | Android Activity Launch Modes and Tasks | Gonçalo Silva
Android | Android Activity Launch Modes and Tasks | Gonçalo SilvaAndroid | Android Activity Launch Modes and Tasks | Gonçalo Silva
Android | Android Activity Launch Modes and Tasks | Gonçalo SilvaJAX London
 
Implementing a JavaScript Engine
Implementing a JavaScript EngineImplementing a JavaScript Engine
Implementing a JavaScript EngineKris Mok
 
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
 
Layouts - Java
Layouts - JavaLayouts - Java
Layouts - Javanjca01
 
Sistema Gestión De Bases De Datos
Sistema  Gestión  De  Bases  De  DatosSistema  Gestión  De  Bases  De  Datos
Sistema Gestión De Bases De DatosJeisson Nc
 

Mais procurados (20)

Componentes de eclipse
Componentes de eclipseComponentes de eclipse
Componentes de eclipse
 
Que Es Java
Que Es JavaQue Es Java
Que Es Java
 
Core java concepts
Core java  conceptsCore java  concepts
Core java concepts
 
Java - Packages Concepts
Java - Packages ConceptsJava - Packages Concepts
Java - Packages Concepts
 
Java swing
Java swingJava swing
Java swing
 
Java AWT
Java AWTJava AWT
Java AWT
 
Caracteristicas de Java
Caracteristicas de JavaCaracteristicas de Java
Caracteristicas de Java
 
Java packages
Java packagesJava packages
Java packages
 
Generics
GenericsGenerics
Generics
 
Collections In Java
Collections In JavaCollections In Java
Collections In Java
 
Presentacion Java
Presentacion JavaPresentacion Java
Presentacion Java
 
Swing
SwingSwing
Swing
 
Constructores en Java
Constructores en JavaConstructores en Java
Constructores en Java
 
Android | Android Activity Launch Modes and Tasks | Gonçalo Silva
Android | Android Activity Launch Modes and Tasks | Gonçalo SilvaAndroid | Android Activity Launch Modes and Tasks | Gonçalo Silva
Android | Android Activity Launch Modes and Tasks | Gonçalo Silva
 
Implementing a JavaScript Engine
Implementing a JavaScript EngineImplementing a JavaScript Engine
Implementing a JavaScript Engine
 
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
 
Layouts - Java
Layouts - JavaLayouts - Java
Layouts - Java
 
Polimorfismo en Java
Polimorfismo en JavaPolimorfismo en Java
Polimorfismo en Java
 
Sistema Gestión De Bases De Datos
Sistema  Gestión  De  Bases  De  DatosSistema  Gestión  De  Bases  De  Datos
Sistema Gestión De Bases De Datos
 
JAVA PROGRAMMING - The Collections Framework
JAVA PROGRAMMING - The Collections Framework JAVA PROGRAMMING - The Collections Framework
JAVA PROGRAMMING - The Collections Framework
 

Semelhante a Java GUI La librería Swing

Semelhante a Java GUI La librería Swing (20)

Java 120706083911-phpapp01
Java 120706083911-phpapp01Java 120706083911-phpapp01
Java 120706083911-phpapp01
 
Miswing 110511215936-phpapp01
Miswing 110511215936-phpapp01Miswing 110511215936-phpapp01
Miswing 110511215936-phpapp01
 
Java
JavaJava
Java
 
Clase 5 JAVA 2012
Clase 5 JAVA 2012Clase 5 JAVA 2012
Clase 5 JAVA 2012
 
Interfaces Usuario 3
Interfaces Usuario 3Interfaces Usuario 3
Interfaces Usuario 3
 
Trabajo teórico exposcición
Trabajo teórico exposciciónTrabajo teórico exposcición
Trabajo teórico exposcición
 
Guis en java-1pp_2011_
Guis en java-1pp_2011_Guis en java-1pp_2011_
Guis en java-1pp_2011_
 
Guis en java-1pp_2012_
Guis en java-1pp_2012_Guis en java-1pp_2012_
Guis en java-1pp_2012_
 
Guis_en_java_6pp.pdf
Guis_en_java_6pp.pdfGuis_en_java_6pp.pdf
Guis_en_java_6pp.pdf
 
Clase swing
Clase swingClase swing
Clase swing
 
Programacion en JAVA 2
Programacion en JAVA 2Programacion en JAVA 2
Programacion en JAVA 2
 
Swin01
Swin01Swin01
Swin01
 
Interfaces graficas(1)
Interfaces graficas(1)Interfaces graficas(1)
Interfaces graficas(1)
 
Tema6resumido
Tema6resumidoTema6resumido
Tema6resumido
 
Programación i
Programación iProgramación i
Programación i
 
Eventos
EventosEventos
Eventos
 
Taller 1 7
Taller 1 7Taller 1 7
Taller 1 7
 
JAVA Interfaz gráfica (GUI)
JAVA Interfaz gráfica (GUI)JAVA Interfaz gráfica (GUI)
JAVA Interfaz gráfica (GUI)
 
Tema 7 gui, swing y java beans por gio
Tema 7   gui, swing y java beans por gioTema 7   gui, swing y java beans por gio
Tema 7 gui, swing y java beans por gio
 
Tema 6 gui, swing y java beans por gio
Tema 6   gui, swing y java beans por gioTema 6   gui, swing y java beans por gio
Tema 6 gui, swing y java beans por gio
 

Mais de Laura

Modo de transferencia asíncrona/síncrona (ATM)
Modo de transferencia asíncrona/síncrona (ATM)Modo de transferencia asíncrona/síncrona (ATM)
Modo de transferencia asíncrona/síncrona (ATM)Laura
 
Evaluación de Proyectos temas 3.7, 4.1 y 4.2
Evaluación de Proyectos temas 3.7, 4.1 y 4.2Evaluación de Proyectos temas 3.7, 4.1 y 4.2
Evaluación de Proyectos temas 3.7, 4.1 y 4.2Laura
 
3.5.5 Financiamiento (Administración de la Función Informática)
3.5.5 Financiamiento (Administración de la Función Informática)3.5.5 Financiamiento (Administración de la Función Informática)
3.5.5 Financiamiento (Administración de la Función Informática)Laura
 
Motivación
MotivaciónMotivación
MotivaciónLaura
 
Comunicación en el grupo
Comunicación en el grupoComunicación en el grupo
Comunicación en el grupoLaura
 
Programacion Orientada a Eventos
Programacion Orientada a EventosProgramacion Orientada a Eventos
Programacion Orientada a EventosLaura
 

Mais de Laura (6)

Modo de transferencia asíncrona/síncrona (ATM)
Modo de transferencia asíncrona/síncrona (ATM)Modo de transferencia asíncrona/síncrona (ATM)
Modo de transferencia asíncrona/síncrona (ATM)
 
Evaluación de Proyectos temas 3.7, 4.1 y 4.2
Evaluación de Proyectos temas 3.7, 4.1 y 4.2Evaluación de Proyectos temas 3.7, 4.1 y 4.2
Evaluación de Proyectos temas 3.7, 4.1 y 4.2
 
3.5.5 Financiamiento (Administración de la Función Informática)
3.5.5 Financiamiento (Administración de la Función Informática)3.5.5 Financiamiento (Administración de la Función Informática)
3.5.5 Financiamiento (Administración de la Función Informática)
 
Motivación
MotivaciónMotivación
Motivación
 
Comunicación en el grupo
Comunicación en el grupoComunicación en el grupo
Comunicación en el grupo
 
Programacion Orientada a Eventos
Programacion Orientada a EventosProgramacion Orientada a Eventos
Programacion Orientada a Eventos
 

Último

Planificación del mes de afrovenezolanidad2024.doc
Planificación del mes de afrovenezolanidad2024.docPlanificación del mes de afrovenezolanidad2024.doc
Planificación del mes de afrovenezolanidad2024.docAhilynBasabe
 
INICIOS DEL MOVIMIENTO MODERNO 1900-1930.pdf
INICIOS DEL MOVIMIENTO MODERNO 1900-1930.pdfINICIOS DEL MOVIMIENTO MODERNO 1900-1930.pdf
INICIOS DEL MOVIMIENTO MODERNO 1900-1930.pdfBrbara57940
 
SESION 05 MOBILIARIO Y EQUIPAMIENTO.pptx
SESION 05 MOBILIARIO Y EQUIPAMIENTO.pptxSESION 05 MOBILIARIO Y EQUIPAMIENTO.pptx
SESION 05 MOBILIARIO Y EQUIPAMIENTO.pptxJustoAlbertoBaltaSmi
 
POESÍA ERÓTICA DEL SIGLO XVIII - SERIA Y CARNAL
POESÍA ERÓTICA DEL SIGLO XVIII - SERIA Y CARNALPOESÍA ERÓTICA DEL SIGLO XVIII - SERIA Y CARNAL
POESÍA ERÓTICA DEL SIGLO XVIII - SERIA Y CARNALEvaMaraMorenoLago1
 
cabildo abierto forma de participación ciudadana
cabildo abierto forma de participación ciudadanacabildo abierto forma de participación ciudadana
cabildo abierto forma de participación ciudadanaMarsielMendoza1
 
DISENO_FACTORIAL_2_2_EXPOSICION_pptx.pptx
DISENO_FACTORIAL_2_2_EXPOSICION_pptx.pptxDISENO_FACTORIAL_2_2_EXPOSICION_pptx.pptx
DISENO_FACTORIAL_2_2_EXPOSICION_pptx.pptxNorberto Chacon
 
PLANTILLA UNAD JJAJJJJJWRBJHGURGERRTERTRTRY
PLANTILLA UNAD JJAJJJJJWRBJHGURGERRTERTRTRYPLANTILLA UNAD JJAJJJJJWRBJHGURGERRTERTRTRY
PLANTILLA UNAD JJAJJJJJWRBJHGURGERRTERTRTRYkarendaza9506
 
Portafolio Santiago Agudelo Duran 2024 -30
Portafolio Santiago Agudelo Duran 2024 -30Portafolio Santiago Agudelo Duran 2024 -30
Portafolio Santiago Agudelo Duran 2024 -30SantiagoAgudelo47
 
Espacios únicos creados por nuestros clientes
Espacios únicos creados por nuestros clientesEspacios únicos creados por nuestros clientes
Espacios únicos creados por nuestros clientesespejosflorida
 
GROPUIS Y WRIGHT DIPOSITIVA ARQUITECTURA DISEÑO MODERNIDAD
GROPUIS Y WRIGHT DIPOSITIVA ARQUITECTURA DISEÑO MODERNIDADGROPUIS Y WRIGHT DIPOSITIVA ARQUITECTURA DISEÑO MODERNIDAD
GROPUIS Y WRIGHT DIPOSITIVA ARQUITECTURA DISEÑO MODERNIDADGersonManuelRodrigue1
 
140254879-Triptico-Color-Dia-de-La-Madre.doc
140254879-Triptico-Color-Dia-de-La-Madre.doc140254879-Triptico-Color-Dia-de-La-Madre.doc
140254879-Triptico-Color-Dia-de-La-Madre.docilvrosiebp
 
Introduccion-a-los-numeros-en-ingles.pptx
Introduccion-a-los-numeros-en-ingles.pptxIntroduccion-a-los-numeros-en-ingles.pptx
Introduccion-a-los-numeros-en-ingles.pptxcalc5597
 
Proceso de percepción visual y de reconocimiento
Proceso de percepción visual y de reconocimientoProceso de percepción visual y de reconocimiento
Proceso de percepción visual y de reconocimientoJorge Fernandez
 
Geometrías de la imaginación: Diseño e iconografía de Querétaro
Geometrías de la imaginación: Diseño e iconografía de QuerétaroGeometrías de la imaginación: Diseño e iconografía de Querétaro
Geometrías de la imaginación: Diseño e iconografía de QuerétaroJuan Carlos Fonseca Mata
 
DIAPOSITIVAS OFICIAL DE PROYECTO DE GRAGO
DIAPOSITIVAS OFICIAL DE PROYECTO DE GRAGODIAPOSITIVAS OFICIAL DE PROYECTO DE GRAGO
DIAPOSITIVAS OFICIAL DE PROYECTO DE GRAGOyordanespinozanina
 
GRUPO 1.pptx problemas oportunidades objetivos
GRUPO 1.pptx problemas oportunidades objetivosGRUPO 1.pptx problemas oportunidades objetivos
GRUPO 1.pptx problemas oportunidades objetivosCristianGmez22034
 
guia de talles de camitas cucciolos 2024.pdf
guia de talles de camitas cucciolos 2024.pdfguia de talles de camitas cucciolos 2024.pdf
guia de talles de camitas cucciolos 2024.pdfcucciolosfabrica
 
PLAN DE MANTENIMIENTO DE SISTEMAS DE AGUA CHONTAYOC.docx
PLAN DE MANTENIMIENTO DE SISTEMAS DE AGUA CHONTAYOC.docxPLAN DE MANTENIMIENTO DE SISTEMAS DE AGUA CHONTAYOC.docx
PLAN DE MANTENIMIENTO DE SISTEMAS DE AGUA CHONTAYOC.docxLeo Florez
 
Arquitectos del Movimiento Moderno Pt. 2.pdf
Arquitectos del Movimiento Moderno Pt. 2.pdfArquitectos del Movimiento Moderno Pt. 2.pdf
Arquitectos del Movimiento Moderno Pt. 2.pdfLeonardoDantasRivas
 

Último (20)

Planificación del mes de afrovenezolanidad2024.doc
Planificación del mes de afrovenezolanidad2024.docPlanificación del mes de afrovenezolanidad2024.doc
Planificación del mes de afrovenezolanidad2024.doc
 
INICIOS DEL MOVIMIENTO MODERNO 1900-1930.pdf
INICIOS DEL MOVIMIENTO MODERNO 1900-1930.pdfINICIOS DEL MOVIMIENTO MODERNO 1900-1930.pdf
INICIOS DEL MOVIMIENTO MODERNO 1900-1930.pdf
 
SESION 05 MOBILIARIO Y EQUIPAMIENTO.pptx
SESION 05 MOBILIARIO Y EQUIPAMIENTO.pptxSESION 05 MOBILIARIO Y EQUIPAMIENTO.pptx
SESION 05 MOBILIARIO Y EQUIPAMIENTO.pptx
 
POESÍA ERÓTICA DEL SIGLO XVIII - SERIA Y CARNAL
POESÍA ERÓTICA DEL SIGLO XVIII - SERIA Y CARNALPOESÍA ERÓTICA DEL SIGLO XVIII - SERIA Y CARNAL
POESÍA ERÓTICA DEL SIGLO XVIII - SERIA Y CARNAL
 
cabildo abierto forma de participación ciudadana
cabildo abierto forma de participación ciudadanacabildo abierto forma de participación ciudadana
cabildo abierto forma de participación ciudadana
 
DISENO_FACTORIAL_2_2_EXPOSICION_pptx.pptx
DISENO_FACTORIAL_2_2_EXPOSICION_pptx.pptxDISENO_FACTORIAL_2_2_EXPOSICION_pptx.pptx
DISENO_FACTORIAL_2_2_EXPOSICION_pptx.pptx
 
PLANTILLA UNAD JJAJJJJJWRBJHGURGERRTERTRTRY
PLANTILLA UNAD JJAJJJJJWRBJHGURGERRTERTRTRYPLANTILLA UNAD JJAJJJJJWRBJHGURGERRTERTRTRY
PLANTILLA UNAD JJAJJJJJWRBJHGURGERRTERTRTRY
 
Portafolio Santiago Agudelo Duran 2024 -30
Portafolio Santiago Agudelo Duran 2024 -30Portafolio Santiago Agudelo Duran 2024 -30
Portafolio Santiago Agudelo Duran 2024 -30
 
Espacios únicos creados por nuestros clientes
Espacios únicos creados por nuestros clientesEspacios únicos creados por nuestros clientes
Espacios únicos creados por nuestros clientes
 
GROPUIS Y WRIGHT DIPOSITIVA ARQUITECTURA DISEÑO MODERNIDAD
GROPUIS Y WRIGHT DIPOSITIVA ARQUITECTURA DISEÑO MODERNIDADGROPUIS Y WRIGHT DIPOSITIVA ARQUITECTURA DISEÑO MODERNIDAD
GROPUIS Y WRIGHT DIPOSITIVA ARQUITECTURA DISEÑO MODERNIDAD
 
140254879-Triptico-Color-Dia-de-La-Madre.doc
140254879-Triptico-Color-Dia-de-La-Madre.doc140254879-Triptico-Color-Dia-de-La-Madre.doc
140254879-Triptico-Color-Dia-de-La-Madre.doc
 
Introduccion-a-los-numeros-en-ingles.pptx
Introduccion-a-los-numeros-en-ingles.pptxIntroduccion-a-los-numeros-en-ingles.pptx
Introduccion-a-los-numeros-en-ingles.pptx
 
Proceso de percepción visual y de reconocimiento
Proceso de percepción visual y de reconocimientoProceso de percepción visual y de reconocimiento
Proceso de percepción visual y de reconocimiento
 
Geometrías de la imaginación: Diseño e iconografía de Querétaro
Geometrías de la imaginación: Diseño e iconografía de QuerétaroGeometrías de la imaginación: Diseño e iconografía de Querétaro
Geometrías de la imaginación: Diseño e iconografía de Querétaro
 
DIAPOSITIVAS OFICIAL DE PROYECTO DE GRAGO
DIAPOSITIVAS OFICIAL DE PROYECTO DE GRAGODIAPOSITIVAS OFICIAL DE PROYECTO DE GRAGO
DIAPOSITIVAS OFICIAL DE PROYECTO DE GRAGO
 
GRUPO 1.pptx problemas oportunidades objetivos
GRUPO 1.pptx problemas oportunidades objetivosGRUPO 1.pptx problemas oportunidades objetivos
GRUPO 1.pptx problemas oportunidades objetivos
 
guia de talles de camitas cucciolos 2024.pdf
guia de talles de camitas cucciolos 2024.pdfguia de talles de camitas cucciolos 2024.pdf
guia de talles de camitas cucciolos 2024.pdf
 
PLAN DE MANTENIMIENTO DE SISTEMAS DE AGUA CHONTAYOC.docx
PLAN DE MANTENIMIENTO DE SISTEMAS DE AGUA CHONTAYOC.docxPLAN DE MANTENIMIENTO DE SISTEMAS DE AGUA CHONTAYOC.docx
PLAN DE MANTENIMIENTO DE SISTEMAS DE AGUA CHONTAYOC.docx
 
Arquitectos del Movimiento Moderno Pt. 2.pdf
Arquitectos del Movimiento Moderno Pt. 2.pdfArquitectos del Movimiento Moderno Pt. 2.pdf
Arquitectos del Movimiento Moderno Pt. 2.pdf
 
1.La locomoción de los seres vivos diseño
1.La locomoción de los seres vivos diseño1.La locomoción de los seres vivos diseño
1.La locomoción de los seres vivos diseño
 

Java GUI La librería Swing

  • 1. Java GUI La librería Swing
  • 2. Programación conducida por eventos  En programas tradicionales (basados en texto):  el programa controla el flujo de la ejecución  el programa controla la secuencia de las entradas  Los programas con GUI son “event-driven”  la secuencia de las entradas controlan el flujo de la ejecución  el sistema invoca código del usuario
  • 3. Programación conducida por eventos Código del sistema Su código
  • 4. Generación de eventos Las acciones tales como: pulsar un botón, mover el mouse, etc. son reconocidas e identificadas por los sistemas operativos (OS) o la JVM. 2. Por cada acción el OS/JVM determinan cuál de los programas que se están ejecutando recibirán la señal (de la acción). 3. Las señales que la aplicaciones reciben del OS/JVM como resultado de una acción son llamadas eventos.
  • 5. Generación de eventos GUI Acciones Mouse, Teclado,etc. Sistema Operativo JAVA API /Windows Eventos Métodos Métodos Aplicación 1 Aplicación 2
  • 6. Manejo de eventos  Una aplicación responde a los eventos ejecutando código adecuado para cada tipo particular de eventos.  No todos los eventos necesitan ser tenidos en cuenta poruna aplicación. Por ejemplo: Una aplicación para dibujar puede estar interesada sólo en movimientos del mouse.  Como diseñador de una aplicación manejada por eventos, deberá escribir clases/métodos para manejar los eventos relevantes.
  • 7. Java GUI  Java provee dos librerías para crear GUIs:  Java AWT (Abstract Window Toolkit)  Java Foundation Classes (JFC o Swing), a partirde Java2
  • 8. Java Foundation Classes  JFC es una colección muy grande de software.  AWT y Swing son las dosgrandes familias para desarrollo de GUI en el entorno Java. Swing AWT Drag & Drop 2D API JFC APIs Accessibility
  • 10. Swing  Implementada sin usar código nativo (100% Java), con lo cual la GUI se verá de la misma forma en distintas plataformas.  Basada en la arquitectura MVC.  Ofrece una amplia variedad de Look & Feel.  Los componentes de Swing continuarán siendo mejorados en el futuro.
  • 11. AWT y Swing  Los componentes de Swing tienen nombres que comienzan con J.  Ejemplo: Button en AWT es JButton en Swing  Los componentes de AWT están en el paquete java.awt, los de Swing en javax.swing.  import javax.swing.*; import java.awt.*; import java.awt.event.*;
  • 12.
  • 27.
  • 28. Aplicaciones basadas en GUI  El desarrollo de una aplicación basada en GUI requiere la comprensión de:  Estructura de la jerarquía de herencia, que define el comportamiento y atributos de los componentes en la GUI de la aplicación.  Estructura de la jerarquía de contenedores,que define cómo se disponen todos los componentes en la GUI de la aplicación.  Manejo de eventos.
  • 32. Componentes de Swing  La clase Component (y sus subclases) proveen soporte para manejo de eventos, cambio del tamaño de un componente, control de color y fuentes, pintado.  Un componente es un objeto de una subclase concreta. Se distinguen dos clases de componentes:  Componentes de control de la GUI: la interacción de la GUI con el usuario se realiza a través de ellos.  Contenedores: contienen otros componentes (u otros contenedores).
  • 33. Contenedores  Anidamiento de componentes (Jerarquía de contenedores en contraste con la Jerarquía de herencia). Cada programa Swing contiene al menos una.  Swing provee 4 contenedores de alto nivel (ventana base de la GUI): JFrame, JApplet, JDialog y JWindow.  La jerarquía está compuesta de diferentes capas. Cada contenedor de alto nivel contiene un contenedor intermedio conocido como “contentpane”.En casi todos los programas no es necesario conocer qué hay entre el contenedor de alto nivel y el contentpane.
  • 35. Ejemplo importjavax.swing.JFrame; importjavax.swing.JPanel; importjava.awt.Container; importjava.awt.Color; publicclass Ejemplo { publicstaticvoidmain(Stringargs[]){ //Se crea un objeto JPAnel de 300X300 y color rojo JPanelpanelRojo =new JPanel(); panelRojo.setBackground(Color.RED); panelRojo.setSize(300,300); //Se crea una ventana de 300X300 JFrame ventana=new JFrame("Prueba en rojo"); ventana.setLocation(100,100); ventana.setSize(300,300); ventana.setVisible(true); //Se coloca el JPanel en el contentpane ContainercontentPane=ventana.getContentPane(); contentPane.add(panelRojo); } }
  • 36. Jerarquía de contenedores  La apariencia de una GUI está determinada por:  La jerarquía de contenedores  El Layout Manager de cada contenedor  Las propiedades de los componentes individuales  Todos estos ítems trabajan en conjunto para determinarel efecto visual final.
  • 38. Content Panes  Usualmente es un JPanel.  En la mayoría de las aplicaciones Swing contiene casi todo, excepto la barra de menú.  Debe ser creado explícitamente.
  • 39. Contenedores de alto nivel Applet Dialog Frame
  • 40. Contenedores generales Scroll Pane SplitPane Panel Toolbar TabbedPane
  • 42. Algunos métodos de JFrame  Para construir una ventana con un título y mostrarla: JFrame theWindow = new JFrame( "Graffiti" ); theWindow.show( ); //idem theWindow.setVisible(true);  Para determinar su tamaño: theWindow.setJMenuBar(cyanMenuBar); theWindow.setSize( 220, 100 );//o mejor theWindow.pack();
  • 43. Nueva funcionalidad de JFrame  setDefaultCloseOperation(int) es la másimportante:  DO_NOTHING_ON_CLOSE  HIDE_ON_CLOSE (default) oculta el frame cuandoel usuario lo cierrapero no se deshace de los recursosdel sistemaasociados (puedovolver a mostrar).  DISPOSE_ON_CLOSE oculta el frame y llama al método dispose(), paraliberarrecursos.  EXIT_ON_CLOSE, cierra la aplicación (System.exit(0))
  • 44. Hello World en Swing importjavax.swing.*; importjava.awt.event.*; publicclassHolaMundo { publicstaticvoidmain(String[] args) { JFrameframe = new JFrame("HolaMundoSwing"); final JLabellabel = new JLabel("Hola Mundo"); frame.getContentPane().add(label); //frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.addWindowListener(new java.awt.event.WindowAdapter(){ publicvoidwindowClosing(WindowEvent e){ System.exit(0); } } ); frame.pack(); frame.setVisible(true); } }
  • 45.
  • 46. Componentes atómicos no editables Tool tip Label Progress Bar
  • 47. Otros componentes atómicos Color Chooser File Chooser Table Text Tree
  • 48. API de los componentes GUI  Componente GUI en Java= class  Propiedades  Métodos  Eventos JButton
  • 49. Componentes GUI 1.- Crear  Instanciar objeto: b = new JButton(“press me”); 2.- Configurar  Propiedades: b.text = “press me”;(evitar en Java)  Métodos: b2 = new JButton("Middlebutton", middleButtonIcon); b2.setVerticalTextPosition(AbstractButton.BOTTOM); b2.setHorizontalTextPosition(AbstractButton.CENTER); b2.setMnemonic(KeyEvent.VK_M); b2.setToolTipText("Thismiddlebuttondoesnothing “ + "whenyouclickit."); 3.- Añadir  panel.add(b); 4.- Manejar eventos
  • 50. Características especiales  Los componentes Swing ofrecen características especiales:
  • 51. Características especiales  Tool tips JButton button = new JButton ("Compute"); button.setToolTipText ("Calculate size.");  Mnemonic button.setMnemonic ("C");  Disable JButton button = new JButton (“Do It”); button.setEnabled (false);
  • 52. import java.awt.*; importjava.awt.event.*; importjavax.swing.*; publicclassUnJBoton { public static void main(String args[]) { Frame f = new Frame(); JButton b = new JButton("Pulsame"); f.add(b); f.pack(); f.setVisible(true); b.addActionListener(new ActionListener() { publicvoidactionPerformed(ActionEvent e) { System.out.println("HOLA"); } }); } }
  • 53. importjavax.swing.*; import java.awt.*; publicclass Botones extendsJButton { publicstaticvoidmain(String[] args) { JFrame f = new JFrame(); Iconicon = new ImageIcon("b1.gif"); Iconiconp = new ImageIcon("b2.gif"); Iconiconr = new ImageIcon("b3.gif"); Iconicond = new ImageIcon("b4.gif"); JButton b1 = new JButton("Pulsame",icon); JButton b2 = new JButton("Pulsame",iconp); JButton b3 = new JButton("Pulsame",iconr); JButton b4 = new JButton("Pulsame",icon); b1.setEnabled(false); b1.setDisabledIcon(icond); b1.setRolloverIcon(iconr); b1.setPressedIcon(iconp); Container c = f.getContentPane(); c.setLayout(new FlowLayout()); c.add(b1); c.add(b2); c.add(b3); c.add(b4); f.pack(); f.setVisible(true); } }
  • 54. Características especiales  Bordes JPanelmyPanel = new JPanel(); Border myBorder = BorderFactory.createEtchedBorder(); myPanel.setBorder(myBorder);  Empty  Titled  Line  Matte  Etched  Compound  Bevel
  • 56. Anatomía de una aplicación GUI JFrame JFrame contenedores JPanel JPanel JButton JButton JLabel JLabel Estructura interna GUI
  • 57. Uso de un componente GUI Crearlo Configurarlo Añadir hijo (si es contenedor) Añadir al padre (si no es JFrame) Manejar los eventos ordenimportante
  • 58. Construcción bottom up  Crear:  Frame  Panel  Componentes  Listener  Añadir (bottom up)  Listeners a los componentes  Componentes al panel  Panel al Frame Listener JButton JLabel JPanel JFrame
  • 60. Window Layout  Cada contenedor maneja la disposición de sus componentes.  El programador sólo añade componentes, el contenedorse encarga de la disposición de los mismos.  El contenedor usa un Layout Manager para manejar la disposición de los componentes en el mismo.  Están disponibles diferentes Layout Managers.  El layout puede ser determinado especificando LayoutManagers para los contenedores.
  • 61. Layout Managers  Hay varios Layout Managers predefinidos en:  FlowLayout (en java.awt)  BorderLayout (en java.awt)  CardLayout (en java.awt)  GridLayout (en java.awt)  GridBagLayout (en java.awt)  BoxLayout (en javax.swing)  OverlayLayout (en javax.swing)
  • 62. Layout Managers (LM)  Cada contenedor tiene un Layout Manager por defecto, aunque se puede establecer otro LM para el mismo, de forma explícita. Para anular el LM por defecto se usa el método setLayout (para contenedores de alto nivel se usa getContentPane().setLayout().  El Layout Manager intenta ajustar la disposición de los componentes en el contenedor cuando se añade un nuevo componente o cuando el contenedor cambia de tamaño.  Puede crear su propio LM.
  • 63. Layout Managers de AWT FlowLayout GridLayout null Left to right, Top to bottom ninguno, programador setea x,y,w,h BorderLayout CardLayout GridBagLayout c One at a time n JButton e w s
  • 64. Null Layout setLayout(null);  El programador es responsable de establecer el tamaño y posición de cada componente (setBounds(x,y,w,h))
  • 66. Combinaciones JButton JButton JFrame n JPanel: BorderLayout c JPanel: FlowLayout JTextArea