Desarrollo de Aplicaciones en Java INF 473

Documentos relacionados
Manejo de eventos AWT

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

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)

2.1 Elementos gráficos en Java.

Interfaces gráficas. Jose Jesus García Rueda

Ejemplo de GUI con Swing

Programación de sistemas

Programación de sistemas

Interfaces gráficas con Swing

Interacción con el Usuario Gestión de Eventos

Uso de Java Swing. Noviembre de 2013

Construir una Interfaz Gráfica

Tema 8: Gestión de eventos

USO DE LOS OBJETOS JLABEL, JTEXTFIELD Y JBUTTON

INTERFAZ GRÁFICO DE USUARIO

Aplicaciones gráficas en Java Librería Swing

Programación de Eventos

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

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

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

Agenda. Contenedores y componentes

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

Sistema de Archivos en Java

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

Programación Orientada a Objetos

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

Ejemplo de la Clase Persona

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

INTERFAZ GRÁFICO DE USUARIO

Federico Peinado

Programación Avanzada. Juan Manuel Fernández. Curso 2011 Ejemplo de uso de sockets desde aplicaciones visuales. Usan un hilo en banco.

Interfaces gráficas de usuario

// Suma.java // Programa de suma que utiliza a JOptionPane para entrada y salida. import javax.swing.joptionpane; // el programa usa JOptionPane

Autor: Ing. Tymoschuk, Jorge

Interfaces gráficas de usuario

Desarrollo de aplicaciones con JAVA, JCreator, JDeveloper NetBeans

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

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

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

- Crear los componentes que se muestran en dicha ventana.

Tips de Componentes UI Java Swing con Netbeans

Interfaces Gráficas de Usuario en Java Julio Introducción. 2. Crear una ventana 2

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

Partes de un programa en Java. A. Ejemplo de un Programa en Java /* Programa Ejemplo de Java: Muestra una Ventana Archivo: Ejemplo1.

GUIs en Java. Dr. Antonio LaTorre

EJERCITACIÓN JAVA CÁTEDRA DE LENGUAJES ORIENTADOS A OBJETOS. Ing. Mario Bressano & Luciano Diamand ENVÍO RESUELTO 05

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

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

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

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

Unidad III. Interfaz de Escritorio SWING

Java GUI La librería Swing

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

Java Avanzado. Lenguaje de Programación Java. Interfaces Gráficas de Usuario con Java. Elaboró: Oscar Alejandro González Bustamante

Interfaces de usuario [Interfaces de usuario con Java]

Introducción a la Programación Orientada a Objetos

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.

Interfaces de usuario con

Interfaz Gráfica de Usuario (GUI)

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

Laboratorio de Aplicaciones Telemáticas Ingeniería Técnica de Telecomunicación Especialidad en Telemática

Introducción a componentes Swing

Introducción al lenguaje Java

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

Programación interactiva. Oscar Bedoya

III SEMANAS GESTIÓN DE EVENTOS PROGRAMACIÓN II CICLO. Ing. Manuel Jesús Sánchez Chero Profesor del Curso

Java y Eclipse Desarrolle una aplicación con Java y Eclipse

Programación Java Curso C Draw

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

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

INSTALACION Y PRUEBA DEL PLUGIN WindowBuilder para trabajar Swing en Eclipse

Reutilización del Software. Patrones de Diseño

GESTIÓN DE EVENTOS GUI EN JAVA 13/04/2007 DAI. Evento: Objeto que describe qué sucede

Introducción a los servicios web 2012 Marcelino Rodríguez Suárez Un servicio web publica su descripción en un documento XML en

Tema: Introducción a Java y Netbeans

INF 473 Desarrollo de Aplicaciones en Java

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

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

IMPLEMENTACIÓN DEL JUEGO DEL AJEDREZ

SP-PS1 : generación de código java para un análisis léxico

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

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

Java en 3 horas. Ampliación de Sistemas Operativos. Rodrigo Santamaría

1 HILOS (THREADS) EN JAVA

Java en 2 horas. Rodrigo Santamaría

75-62 Técnicas de Programación Concurrente II 2004 java Threads

INTERFAZ GRÁFICO DE USUARIO APLICACIONES DE EJEMPLO

CÁTEDRA DE LENGUAJE DE PROGRAMACIÓN JAVA 2014

Introduciendo datos desde el

1. Guía de programación con jopas

Clase 24. Caso práctico: Creación de una calculadora simple con notación postfijo. Objetivos

HÉCTOR ARTURO FLÓREZ FERNÁNDEZ

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

Transcripción:

Desarrollo de Aplicaciones en Java INF 473 Desarrollo de Interfaces Gráficas Componentes Swing II Prof. José Miguel Rubio jose.rubio.l@ucv.cl jrubio@inf.ucv.cl PUCV Marzo 2008 0

Generación de código Diferencia (en Swing y AWT) entre:» Código generado automáticamente En una IDE (como Netbeans) Se deben conservar los ficheros:» *.java» *.form» Código no generado automáticamente 1

Ejemplo 2

Ejemplo, autom. (I) public class MiVentana extends javax.swing.jframe { private int clicks; public MiVentana() { this.clicks=0; initcomponents(); private void initcomponents() { jpanel1 = new javax.swing.jpanel(); jbutton1 = new javax.swing.jbutton(); jbutton2 = new javax.swing.jbutton(); jpanel2 = new javax.swing.jpanel(); jlabel1 = new javax.swing.jlabel(); settitle("un ejemplo"); addwindowlistener (new java.awt.event.windowadapter() { public void windowclosing (java.awt.event.windowevent evt) { exitform(evt); ); 3

Ejemplo, autom. (II) jpanel1.setborder // Definido en JComponent (new javax.swing.border.lineborder (new java.awt.color(0, 0, 0))); jbutton1.settext("numero de clicks"); jbutton1.addactionlistener (new java.awt.event.actionlistener() { public void actionperformed (java.awt.event.actionevent evt) { jbutton1actionperformed(evt); ); jpanel1.add(jbutton1); jbutton2.settext("no hacer click"); jbutton2.addactionlistener (new java.awt.event.actionlistener() { public void actionperformed (java.awt.event.actionevent evt) { jbutton2actionperformed(evt); ); jpanel1.add(jbutton2);,,,,,, 4

Ejemplo, autom. (III),,,,,, getcontentpane(). add(jpanel1, java.awt.borderlayout.south); jlabel1.settext("numero de clicks: 0"); jlabel1.setborder (new javax.swing.border.lineborder (new java.awt.color(0, 0, 0))); jpanel2.add(jlabel1); getcontentpane().add(jpanel2, java.awt.borderlayout.center); pack(); private void jbutton2actionperformed (java.awt.event.actionevent evt) { // Add your handling code here: this.clicks=(this.clicks%2)/(this.clicks%2); // EXCEPCIONES RUNTIME this.jlabel1.settext("número de clicks: " + this.clicks); 5

Ejemplo, autom. (IV) private void jbutton1actionperformed (java.awt.event.actionevent evt) { // Add your handling code here: this.clicks++; this.jlabel1.settext("número de clicks: " + this.clicks); private void exitform(java.awt.event.windowevent evt) { System.exit(0); public static void main(string args[]) { new MiVentana().show(); private javax.swing.jbutton jbutton2; private javax.swing.jlabel jlabel1; private javax.swing.jbutton jbutton1; private javax.swing.jpanel jpanel2; private javax.swing.jpanel jpanel1; 6

Mensajes de error java.lang.arithmeticexception: / by zero at MiVentana.jButton2ActionPerformed(MiVentana.java:71) at MiVentana.access$200(MiVentana.java:11) at MiVentana$3.actionPerformed(MiVentana.java:52)............ at java.awt.eventdispatchthread.pumpevents (EventDispatchThread.java:130) at java.awt.eventdispatchthread.run (EventDispatchThread.java:98) El programa sigue funcionando. Funcionamiento de un programa Swing:» El hilo de tratamiento de eventos es un bucle que recoge los eventos generados y ejecuta los métodos de los listeners» En pseudocódigo: while ( hay-eventos-por-procesar ) { try { procesa-el-siguiente-evento catch (Exception exc) { exc.printstacktrace(); 7

Ejemplo, no autom. (I) import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; public class MiVentana extends JFrame implements ActionListener { private JButton jbutton2; private JLabel jlabel1; private JButton jbutton1; private JPanel jpanel2; private JPanel jpanel1; private int clicks; public MiVentana() { this.clicks=0; jpanel1 = new JPanel(); jbutton1 = new JButton(); jbutton2 = new JButton(); jpanel2 = new JPanel(); jlabel1 = new JLabel(); settitle("un ejemplo"); addwindowlistener(new WindowAdapter() { public void windowclosing(windowevent evt) { System.exit(0); ); 8

Ejemplo, no autom. (II) jpanel1.setborder (new LineBorder(new Color(0, 0, 0))); jbutton1.settext("numero de clicks"); jbutton1.addactionlistener(this); jpanel1.add(jbutton1); jbutton2.settext("no hacer click"); jbutton2.addactionlistener(this); jpanel1.add(jbutton2); getcontentpane(). add(jpanel1, BorderLayout.SOUTH); jlabel1.settext("n\u00famero de clicks: 0"); jlabel1.setborder (new LineBorder(new Color(0, 0, 0))); jpanel2.add(jlabel1); getcontentpane(). add(jpanel2, BorderLayout.CENTER); pack(); 9

Ejemplo, no autom. (III) public void actionperformed (ActionEvent evt) { if (evt.getsource()==this.jbutton1) { this.clicks++; this.jlabel1. settext("número de clicks: " + this.clicks); else if (evt.getsource()==this.jbutton2) { this.clicks=(this.clicks%2)/(this.clicks%2); this.jlabel1. settext("número de clicks: " + this.clicks); public static void main(string args[]) { new MiVentana().show(); 10

Ejemplo, no autom. (IV) Los oyentes pueden ser:» La ventana (el JFrame)» Clases anónimas (como las generadas por Netbeans)» Clases anidadas Ejemplo Clases-anidadas-oyentes» Otras clases Deberían tener acceso a los parámetros de la ventana (como tienen las clases anónimas y las internas) 11

Jerarquía de eventos javax.swing.event.listselectionevent Object java.util.eventobject java.awt.awtevent ItemEvent KeyEvent ActionEvent MouseEvent FocusEvent Paquete por defecto java.awt.event.*; Línea discontinua otras clases intermedias Clase EventObject public Object getsource() 12

JButton Clases JButton y» Constructor: JCheckBox (I) public JButton(String text)» Eventos: ActionEvent (haciendo click) JCheckBox» Constructor: public JCheckBox (String text, boolean selected)» Eventos: ActionEvent y ItemEvent (haciendo click) Evento ActionEvent public ActionEvent(Object source, int id, String command) 13

Clases JButton y JCheckBox (II) Interface ActionListener:» public void actionperformed (ActionEvent evt) Evento ItemEvent public ItemEvent(ItemSelectable source, int id, Object item, int statechange) Valores de statechange:» ItemEvent.SELECTED» ItemEvent.DESELECTED Interface ItemListener:» public void itemstatechanged (ItemEvent evt) Ejemplo:» JButton-JCheckBox 14

Ejemplo 15

JLabel» Constructor: Clases JLabel y JComboBox public JLabel(String text, Icon icon, int horizontalalignment) JComboBox» Editable o no editable» Constructor: public JComboBox(ComboBoxModel amodel) DefaultComboBoxModel (descendiente de ComboBoxModel)» Se permite modificar los elementos del modelo en tiempo de ejecución.» Eventos: ItemEvent (al seleccionar) ActionEvent (al seleccionar o apretar enter) Ejemplo:» JLabel-JComboBox 16

Ejemplo 17

JTextField Clases JTextField y» Constructor:» Eventos: JTextArea public JTextField(String text, int columns) ActionEvent (pulsando enter )» Métodos: (set get)text JTextArea» Constructor:» Métodos: public JTextArea(String text, int rows, int columns) public void append(string str) (set get)text 18

Clase JScrollPane JScrollPane» Métodos: public void sethorizontalscrollbarpolicy(int policy)» JScrollPane.HORIZONTAL_SCROLLBA R_AS_NEEDED» JScrollPane.HORIZONTAL_SCROLLBA R_NEVER» JScrollPane.HORIZONTAL_SCROLLBA R_ALWAYS public void setviewportview(component view) Incluir una componente» Constructor: public JScrollPane(Component view) Equivalente a haber hecho setviewport y política AS_NEEDED horizontal y vertical Ejemplo:» JTextField-JTextArea-JScrollPane 19

Ejemplo 20

JList Clases JList y JDialog (I)» Selección simple o múltiple» Constructor: public JList(ListModel datamodel)» Eventos: javax.swing.event.listselectionevent Interface ListModel. Descendientes:» AbstractListModel (clase abstracta) DefaultListModel Permite modificar los elementos en tiempo de ejecución. 21

Clases JList y JDialog (II) JDialog» Análogo a un JFrame, aunque: Modal (única ventana activable) El thread principal de eventos queda bloqueado al hacer setvisible(true) en el diálogo. Se desbloquea al hacer setvisible(false) en el diálogo.» Se genera otro thread para los eventos de la ventana de diálogo. No modal» Constructor: public JDialog(Dialog owner, boolean modal) Ventanas de diálogo predefinidas:» javax.swing.joptionpane Es extends JComponent» Dos posibles usos: Primer uso: public static int showconfirmdialog(component parentcomponent, Object message). Valores de retorno:» JOptionPane.YES_OPTION» JOptionPane.NO_OPTION» JOptionPane.CANCEL_OPTION 22

Clases JList y JDialog Segundo uso: (III) public JOptionPane(Object message, int messagetype, int optiontype)» messagetype: JOptionPane.QUESTION_MESSAGE, etc» optiontype: JOptionPane.YES_NO_CANCEL_OPTI ON, etc Luego utilizar:» public JDialog createdialog(component parentcomponent, String title) Valor de retorno:» Método getvalue() en clase JOptionPane En cualquier ventana de diálogo, por defecto:» Al hacer click en esquina superior derecha, la ventana desaparece. Ejemplo:» JList-JDialog 23

Ejemplo 24

Menus/Ventanas (I) Una Interfaz de Usuario maneja datos realizando:» Introducción de datos» Procesamiento de datos» Visualización de resultados Posibles interfaces de usuario:» Menús» Ventanas Ejemplo» Menus-Ventanas 25

Menus/Ventanas (II) 26