Java GUI La librería Swing

Documentos relacionados
Uso de Java Swing. Noviembre de 2013

Universidad Carlos III de Madrid Departamento de Ingeniería Telemática. Swing

Programación de sistemas

Componentes Swing. Las clases cuyo nombre comienza por J forman parte de Swing. Todas las demás están incluidas en AWT (Abstract Window Toolkit)

Interfaces gráficas. Jose Jesus García Rueda

Interfaces gráficas de usuario

Indice. Swing: conceptos. Generalidades. Swing & AWT: diferencias. Interfaz Gráfica de Usuario (GUI)

Introducción a Swing. Taller de Programación 2016

2.1 Elementos gráficos en Java.

Tema 6. Interfaces gráficas de usuario (Parte 1)

Programación de Interfaces Gráficas en Java. Agustín J. González ELO329

Aplicaciones gráficas en Java Librería Swing

Componentes Swing look and feel pluggable ( mecanismo de double buffering, transparentes.

Interfaz Gráfica de Usuario (GUI)

Programación de Eventos

Tipos de programas en Java. Programación basada en eventos. Programación basada en eventos. Creación de una interfaz gráfico de usuario

Desarrollo de aplicaciones gráficas

INTERFAZ GRÁFICO DE USUARIO

Capítulo 6: Interfaces es de Usuario.

Programación de sistemas

Programación de Interfaces Gráficas en Java. Agustín J. González ELO329

GUIA DE JAVA NIVEL BÁSICO

Capítulo 7. Introducción a las Interfaces Gráficas de usuario. Continuar

Agenda. Contenedores y componentes

CURSO: Programación de Aplicaciones en Lenguaje JAVA

Ejemplo de GUI con Swing

Interfaces gráficas con Swing

Federico Peinado

AULA MENTOR. educacion.es

Java Avanzado Facultad de Ingeniería. Escuela de computación.

Programación Orientada a Objetos

Manejo de eventos AWT

Programación Avanzada Ingeniería Civil en Computación

JAVA 7 Los fundamentos del lenguaje Java

USO DE LOS OBJETOS JLABEL, JTEXTFIELD Y JBUTTON

Aplicaciones Java. Juan Manuel Fernández Peña Curso 2011, 2013

INSTALACION Y PRUEBA DEL PLUGIN WindowBuilder para trabajar Swing en Eclipse

Interfaces de usuario [Interfaces de usuario con Java]

d) Mencione dos diferencias y dos semejanzas entre clases abstractas e interfaces.

Interacción con el Usuario Gestión de Eventos

INGRESAR DATOS CON UN CONTROL VISUAL EN JAVA. CLASE JTEXTFIELD Y MÉTODO GETTEXT. EJEMPLOS (CU00928C)

Trabajando con GUI en Java Componente java.swing

Desarrollando aplicaciones mediante componentes

HÉCTOR ARTURO FLÓREZ FERNÁNDEZ

14: Crear ventanas y applets

SWING: JButton, JCheckBox y JRadioButton Javier Ovejero Sánchez

Ingeniería del Software. Capa de Presentación. Java 2 con JFC/SWING. Componentes visuales. Gestión de la interfaz

Programación Java Curso C Draw

JAVA 8 Los fundamentos del lenguaje Java (con ejercicios prácticos corregidos)

Interfaces gráficas de usuario

Construcción de GUI en Java. Elementos de Swing. AWT v SWING. Contenedores superiores I. Componentes y contenedores

Estructura de las Aplicaciones Orientadas a Objetos El patrón Modelo-Vista-Controlador (MVC)

9. AWT (Abstract Window Toolkit)

Desarrollo de aplicaciones de acceso a base de datos con JBuilder 7

Eclipse Visual Editor

Java Avanzado Facultad de Ingeniería. Escuela de computación.

APELLIDOS:... NOMBRE:... GRUPO:... NÚMERO DE EXPEDIENTE:...

INTERFAZ GRÁFICO DE USUARIO APLICACIONES DE EJEMPLO

Introducción a la Programación Orientada a Objetos

Programación interactiva. Oscar Bedoya

Objetivo: Construir un programa integrando sentencias de decisión MARCO TEÓRICO

Desarrollo de Aplicaciones

Práctica 4: Java Remote Method Invocation (RMI)

Algoritmia y Programación

Pasos a seguir para crear una aplicación visual en el lenguaje de programación Java con Netbeans IDE.

I. Introducción a la programación orientada a objetos y al lenguaje JAVA Colegio Reuven Feuerstein Javier Navarro

Práctica 18c. Práctica 18c. José M. Ordax

C.I.F.: B Inscrita en el Registro Mercantil de Madrid, Tomo Libro 0, Folio 135, Sección 8. Hoja M Inscripción 1ª

MATRICES, ARREGLOS O ARRAYS DE ELEMENTOS GRÁFICOS EN JAVA. EJEMPLO CON JLABEL Y JTEXTFIELD. (CU00930C)

Tema 7. Construcción de Applets en Java

OBJETOS CONTENEDORES JPANEL Y JSCROLLPANEL

PROGRAMA DE MATERIA SOFTWARE DE BASE Y PROGRAMACION DE SISTEMAS SOFTWARE DE BASE Y PROGRAMACION DE SISTEMAS

- Crear los componentes que se muestran en dicha ventana.

Paquetes de java. java.applet

Principios de Computadoras II

Laboratorio #1: Manejo Básico de NETBEANS 7 e Introducción a pgadmin III

GUÍA DE LABORATORIO 5 ARREGLOS DE UNA DIMENSIÓN

Examen de Programación II (Ingeniería Informática)

Interfaces de usuario con

Multitarea En Swing. Varios hilos trabajadores, también conocidos como hilos en segundo plano.

PROGRAMACIÓN WEB I SEMANA 7 ESTE DOCUMENTO CONTIENE LA SEMANA 7

PROGRAMA DE ASIGNATURA DE FACULTATIVA I

Ejemplo de la Clase Persona

Patrones de Diseño. Patrón estructural Composite. Técnicas de Programación - Curso 2007/08

Lo que necesitaremos para programar en Java, será un editor de texto o IDE y la JDK.

Laboratorio. Instalación de Visual Studio Community. Back To Basics Instalando Visual Studio Community. Versión: 1.0.

Tema: Introducción al IDE de Microsoft Visual C#.

Conocimientos previos

Como crear una aplicación con Java y Eclipse Fecha Lunes, 16 abril a las 19:49:51 Tema Java

Estructura de las Aplicaciones Orientadas a Objetos Interfaces gráficas de usuario

En este método la implementación de la interface de usuario donde se produce el evento y la implementación del oyente están en clases separadas.

1

Transcripción:

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 1. 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 Sistema Operativo Acciones Mouse, Teclado,etc. JAVA API /Windows Eventos Métodos Aplicación 1 Métodos 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 por una 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 partir de Java2

Java Foundation Classes JFC es una colección muy grande de software. AWT y Swing son las dos grandes familias para desarrollo de GUI en el entorno Java. JFC APIs AWT Swing Drag & Drop 2D API 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 javax.swing.plaf javax.swing.plaf.basic javax.swing.plaf.metal javax.swing.plaf.multi javax.swing javax.swing.table javax.swing.tree javax.swing.border javax.swing.colorchooser javax.swing.filechooser javax.swing.text javax.swing.text.html javax.swing.text.html.parser javax.swing.text.rtf javax.swing.event javax.swing.undo

Paquetes JFC/Swing Control del Look & Feel de Swing javax.swing.plaf javax.swing.plaf.basic javax.swing.plaf.metal javax.swing.plaf.multi Overview of JFC/Swing Packages javax.swing javax.swing.table javax.swing.tree javax.swing.border javax.swing.colorchooser javax.swing.filechooser Componentes, incluyendo componentes complejos javax.swing.text javax.swing.text.html javax.swing.text.html.parser javax.swing.text.rtf javax.swing.event javax.swing.undo Widgets basados en texto ( incluyendo html/rtf ) Paquetes nuevos de eventos

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 java.awt.container JMenu JComponent JMenuBar JLayeredPane JPanel JRootPane JDesktopPane JTabbedPane JSplitPane JPopupMenu JInternalFrame JScrollPane JOptionPane JToolbar

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 content pane. En casi todos los programas no es necesario conocer qué hay entre el contenedor de alto nivel y el content pane.

Jerarquía de contenedores

import javax.swing.jframe; import javax.swing.jpanel; import java.awt.container; import java.awt.color; public class Ejemplo { public static void main(string args[]){ //Se crea un objeto JPAnel de 300X300 y color rojo JPanel panelrojo =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 content pane Container contentpane=ventana.getcontentpane(); contentpane.add(panelrojo); } } Ejemplo

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 determinar el 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 Panel Scroll Pane SplitPane TabbedPane Toolbar

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ás importante: DO_NOTHING_ON_CLOSE HIDE_ON_CLOSE (default) oculta el frame cuando el usuario lo cierra pero no se deshace de los recursos del sistema asociados (puedo volver a mostrar). DISPOSE_ON_CLOSE oculta el frame y llama al método dispose(), para liberar recursos. EXIT_ON_CLOSE, cierra la aplicación (System.exit(0))

import javax.swing.*; import java.awt.event.*; Hello World en Swing public class HolaMundo { public static void main(string[] args) { JFrame frame = new JFrame("HolaMundoSwing"); final JLabel label = new JLabel("Hola Mundo"); frame.getcontentpane().add(label); //frame.setdefaultcloseoperation(jframe.exit_on_close) ; frame.addwindowlistener(new java.awt.event.windowadapter(){ public void windowclosing(windowevent e){ System.exit(0); } } ); } } frame.pack(); frame.setvisible(true);

Componentes atómicos Componentes de tipo JPanel almacenan otros objetos de la GUI tales como: botones, etiquetas, campos de texto, etc. Estos objetos gráficos son considerados componentes atómicos, puesto que no pueden almacenar otros objetos de la GUI.

Componentes atómicos básicos Buttons Combo Box List Menu Slider Spinner Text Fields

Componentes atómicos no editables Label Progress Bar Tool tip

Otros componentes atómicos Color Chooser File Chooser Table Text Tree

API de los componentes GUI Componente GUI en Java= class Propiedades JButton Métodos Eventos

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("Middle button", middlebuttonicon); b2.setverticaltextposition(abstractbutton.bottom); b2.sethorizontaltextposition(abstractbutton.center); b2.setmnemonic(keyevent.vk_m); b2.settooltiptext("this middle button does nothing + "when you click it."); 3.- Añadir panel.add(b); 4.- Manejar eventos

Características especiales Los componentes Swing ofrecen características especiales: Tool tip Mnemonic Disable Border Cuando el cursor del mouse se detiene sobre un componente se muestra una línea de texto. Se ejecuta una acción como resultado del pulsado de una combinación de teclas. Un componente puede ser explícitamente habilitado o deshabilitado. Rodea un componente con un borde.

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.*; import java.awt.event.*; import javax.swing.*; public class UnJBoton { 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() { public void actionperformed(actionevent e) { System.out.println("HOLA"); } }); } }

import javax.swing.*; import java.awt.*; public class Botones extends JButton { public static void main(string[] args) { JFrame f = new JFrame(); Icon icon = new ImageIcon("b1.gif"); Icon iconp = new ImageIcon("b2.gif"); Icon iconr = new ImageIcon("b3.gif"); Icon icond = 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);

Características especiales Bordes JPanel mypanel = new JPanel(); Border myborder = BorderFactory.createEtchedBorder(); mypanel.setborder(myborder); Empty Line Etched Bevel Titled Matte Compound

Bordes

Anatomía de una aplicación GUI JFrame JPanel contenedores JFrame JButton JPanel JLabel JButton JLabel Estructura interna GUI

Uso de un componente GUI 1. Crearlo 2. Configurarlo 3. Añadir hijo (si es contenedor) 4. Añadir al padre (si no es JFrame) 5. Manejar los eventos orden importante

Construcción bottom up Crear: Frame Panel Componentes Listener Añadir (bottom up) Listeners a los componentes Componentes al panel Panel al Frame Listener JLabel JButton JPanel JFrame

Window Layout contenedores componentes

Window Layout Cada contenedor maneja la disposición de sus componentes. El programador sólo añade componentes, el contenedor se 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 Layout Managers para los contenedores.

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)

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.

Layout Managers de AWT null FlowLayout GridLayout ninguno, programador setea x,y,w,h Left to right, Top to bottom BorderLayout n CardLayout GridBagLayout w c e One at a time JButton s

Null Layout setlayout(null); El programador es responsable de establecer el tamaño y posición de cada componente (setbounds(x,y,w,h))

Combinaciones JButton JButton JTextArea

Combinaciones JFrame JButton JButton n JPanel: BorderLayout JPanel: FlowLayout c JTextArea