Programación interactiva. Oscar Bedoya

Documentos relacionados
public void mousepressed(mouseevent evento) Se llama cuando se oprime un botón del ratón, mientras el cursor del ratón está sobre un componente.

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

Programación de Eventos

Pasos requeridos para establecer el manejo de eventos para un componente de GUI.

Introducción a la Programación Orientada a Objetos

Interacción con el Usuario Gestión de Eventos

Programación Orientada a Objetos

EVENTOS en Java generador de un evento gestor de eventos

Aplicaciones gráficas en Java Librería Swing

Tema 6. Interfaces gráficas de usuario (Parte II Componentes y eventos)

Unidad 10. Polimorfismo

Construir una Interfaz Gráfica

Programación orientada a objetos. Capítulo 11 Construir interfaces gráficas de usuarios

Desarrollo de Aplicaciones en Java INF 473

Interfaces gráficas. Jose Jesus García Rueda

Programación de sistemas

Programación Java Curso C GUI

USO DE LOS OBJETOS JLABEL, JTEXTFIELD Y JBUTTON

Manejo de eventos AWT

INSTRUCCIÓN PEDIR EN JAVA CON JTEXTAREA Y MOSTRAR CON JLABEL. SETBOUNDS Y SETTEXT. EJEMPLOS. (CU00929C)

INTERFACES GRÁFICAS. Algoritmia y Programación

Facultad de Ingeniería Escuela de Ingeniería de Sistemas y Computación Algoritmia y Programación

Interfases gráficas. Programación Orientada a Objetos.

JAVA 6. Gestión de Eventos

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

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

Desarrollo de Aplicaciones en Java INF 473

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

Creemos una GUI para la siguiente tabla de la base de datos.

USO DEL OBJETO JCOMBOBOX

INTERFACES GRÁFICAS MTRA. CAROLINA GALAVIZ INZUNZA. Mtra. Carolina Galaviz Inzunza

Agenda. Contenedores y componentes

ALGORITMICA Y PROGRAMACION POR OBJETOS I

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)

Intefaces gráficas. Eventos. Jose Jesus García Rueda

Programación Basada en Eventos

Aplicaciones de Escritorio

Creando archivos *.jar 2008

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

import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*;

USO DE LOS OBJETOS JLABEL, JTEXTFIELD Y JBUTTON

OBJETOS CONTENEDORES JPANEL Y JSCROLLPANEL

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

CURSO DE GAMBAS 2.0.0

Introducción a la Programación Orientada a Objetos

Ingeniería del Software Separación entre Presentación y Lógica del Negocio

MP 0485 PRG Java 8 Netbeans 8.2 Swing [ Manual ]

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

EJERCICIO GUIADO. JAVA: DISEÑO DE FORMULARIOS DESDE CÓDIGO

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

2.1 Elementos gráficos en Java.

Java es un lenguaje orientado a objetos, por lo que los objetos (las clases) son los elementos más importantes en el diseño y desarrollo de una

INSTALACION Y PRUEBA DEL PLUGIN WindowBuilder para trabajar Swing en Eclipse

Uso de Java Swing. Noviembre de 2013

Programación basada en eventos Event- Based Programming : Conceptos. ELO329: Diseño y Programación Orientados a Objetos

Programación Orientada a Objetos. Componentes Gráficos

USO DEL OBJETO JLIST

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

Introducción a componentes Swing

1 AVANCE DEL PROYECTO PARA TEORIA DE LA COMPUTACION NOMBRE DEL PROYECTO: SIMULADOR DE AUTOMATAS FINITOS (SAF) OBJETIVO:

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

Interfaces gráficas con Swing

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

Algoritmia y Programación

Programación basada en/dirigida por eventos Event-Based Programming : Conceptos (o Event-driven Programming)

Interfaz Gráfica de Usuario (GUI)

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

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

Interfaces gráficas en Java GUIs Graphical User Interface

Transparencias de Java. Tema 7: AWT. Uploaded by Ingteleco

CAPITULO 11. CONSTRUIR INTERFACES GRAFICAS DE USUARIO

INTERFAZ GRÁFICO DE USUARIO

Conocimientos previos

Interfaces gráficas de usuario

Manual del Usuario del Aplicativo FON. Manual del Usuario. Aplicativo de Funciones Obstétricas y Neonatales. Edgar Velásquez P.

Utiliza el mismo modelo empleado por Graphics Para usarlo. java.awt.geom formas primitivas

USO DEL OBJETO JTABLE

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

Programación interactiva. Oscar Bedoya

Desarrollando aplicaciones mediante componentes

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

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

2017 CÁTEDRA DE LENGUAJE DE PROGRAMACIÓN JAVA

Agentes con Interfaz Gráfica.

PROGRAMACIÓN VISUAL E.A.P. SISTEMAS E INFORMATICA UNIVERSIDAD NACIONAL DEL SANTA CURSO: MICROCOMPUTACION III FACULTA DE INGENIERIA.

Manual del Usuario de Microsoft Access Formularios - Página 1. Tema V: Formularios. V.1. Creación de un Formulario

Personalizar barras de herramientas

Tema 6. Interfaces gráficas de usuario

UNIDAD I.- Elementos de Interfaces Gráficas

Transcripción:

Programación interactiva Oscar Bedoya oscarbed@eisc.univalle.edu.co

Interfaces gráficas con Java Swing

Una interfaz gráfica con el usuario (GUI) es un mecanismo incorporado en las aplicaciones para hacer más amigable y entendible la interacción con el usuario Las GUIs se crean a partir de componentes, éstos permiten que el usuario interactúe mediante el ratón, teclado y otras formas de entrada.

Estructura de las aplicaciones GUI Declarar una clase que herede de la superclase JFrame Declarar cada componente que hará parte de la GUI Dentro del método constructor, crear y organizar los componentes Declarar el método main

Estructura de las aplicaciones GUI Declarar una clase que herede de la superclase JFrame Declarar cada componente que hará parte de la GUI Dentro del método constructor, crear y organizar los componentes Declarar el método main

JFrame Clase Clase() main()

import java.awt.*; import java.awt.event.*; import javax.swing.*; public class GUI extends JFrame { public GUI() { super( "Título de la GUI" ); Container contenedor = getcontentpane(); contenedor.setlayout( new FlowLayout() ); setsize( 275, 170 ); setvisible( true ); public static void main( String a[] ) { GUI aplicacion = new GUI(); aplicacion.setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE );

JFrame GUI GUI() main()

import java.awt.*; import java.awt.event.*; import javax.swing.*; public class GUI extends JFrame { Toda GUI debe heredar de la clase JFrame public GUI() { super( "Título de la GUI" ); Container contenedor = getcontentpane(); contenedor.setlayout( new FlowLayout() ); setsize( 275, 170 ); setvisible( true ); public static void main( String a[] ) { GUI aplicacion = new GUI(); aplicacion.setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE );

import java.awt.*; import java.awt.event.*; import javax.swing.*; public class GUI extends JFrame { public GUI() { super( "Título de la GUI" ); Container contenedor = getcontentpane(); contenedor.setlayout( new FlowLayout() ); setsize( 275, 170 ); setvisible( true ); Se debe DECLARAR cada componente que hará parte de la GUI public static void main( String a[] ) { GUI aplicacion = new GUI(); aplicacion.setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE );

import java.awt.*; import java.awt.event.*; import javax.swing.*; public class GUI extends JFrame { public GUI() { super( "Título de la GUI" ); Container contenedor = getcontentpane(); contenedor.setlayout( new FlowLayout() ); setsize( 275, 170 ); setvisible( true ); Método constructor CREAR cada componente y organizarlo de acuerdo a lo que se requiere public static void main( String a[] ) { GUI aplicacion = new GUI(); aplicacion.setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE );

import java.awt.*; import java.awt.event.*; import javax.swing.*; public class GUI extends JFrame { public GUI() { super( "Título de la GUI" ); Container contenedor = getcontentpane(); contenedor.setlayout( new FlowLayout() ); setsize( 275, 170 ); setvisible( true ); public static void main( String a[] ) { GUI aplicacion = new GUI(); Se crea un objeto de la aplicación aplicacion.setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE);

import java.awt.*; import java.awt.event.*; import javax.swing.*; public class GUI extends JFrame { public GUI() { super( "Título de la GUI" ); Container contenedor = getcontentpane(); contenedor.setlayout( new FlowLayout() ); setsize( 275, 170 ); setvisible( true ); Método constructor Establecer el título de la ventana public static void main( String a[] ) { GUI aplicacion = new GUI(); aplicacion.setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE );

import java.awt.*; import java.awt.event.*; import javax.swing.*; public class GUI extends JFrame { public GUI() { super( "Título de la GUI" ); Container contenedor = getcontentpane(); contenedor.setlayout( new FlowLayout() ); setsize( 275, 170 ); setvisible( true ); Crear el contenedor. Es el espacio que mantiene el contenido de la ventana public static void main( String a[] ) { GUI aplicacion = new GUI(); aplicacion.setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE );

import java.awt.*; import java.awt.event.*; import javax.swing.*; public class GUI extends JFrame { public GUI() { super( "Título de la GUI" ); Container contenedor = getcontentpane(); contenedor.setlayout( new FlowLayout() ); setsize( 275, 170 ); setvisible( true ); Crear el contenedor. Es el espacio que mantiene el contenido de la ventana public static void main( String a[] ) { GUI aplicacion = new GUI(); aplicacion.setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE );

import java.awt.*; import java.awt.event.*; import javax.swing.*; public class GUI extends JFrame { public GUI() { super( "Título de la GUI" ); Container contenedor = getcontentpane(); contenedor.setlayout( new FlowLayout() ); setsize( 275, 170 ); setvisible( true ); Crear el contenedor. Es el espacio que mantiene el contenido de la ventana public static void main( String a[] ) { GUI aplicacion = new GUI(); aplicacion.setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE ); Contenedor

import java.awt.*; import java.awt.event.*; import javax.swing.*; public class GUI extends JFrame { public GUI() { super( "Título de la GUI" ); Container contenedor = getcontentpane(); contenedor.setlayout( new FlowLayout() ); setsize( 275, 170 ); setvisible( true ); Se establecen las dimensiones de la ventana public static void main( String a[] ) { GUI aplicacion = new GUI(); aplicacion.setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE );

import java.awt.*; import java.awt.event.*; import javax.swing.*; public class GUI extends JFrame { public GUI() { super( "Título de la GUI" ); Container contenedor = getcontentpane(); contenedor.setlayout( new FlowLayout() ); setsize( 275, 170 ); setvisible( true ); Algunos componentes que se pueden agregar al contenedor: JLabel JButton JTextField JCheckButtton JRadioButton JList public static void main( String a[] ) { GUI aplicacion = new GUI(); aplicacion.setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE);

import java.awt.*; import java.awt.event.*; import javax.swing.*; public class GUI extends JFrame { public GUI() { super( "Título de la GUI" ); Container contenedor = getcontentpane(); contenedor.setlayout( new FlowLayout() ); setsize( 275, 170 ); setvisible( true ); Declarar Crear y organizar Algunos componentes que se pueden agregar al contenedor: JLabel JButton JTextField JCheckButtton JRadioButton JList public static void main( String a[] ) { GUI aplicacion = new GUI(); aplicacion.setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE);

JLabel (Etiqueta) Las etiquetas son componentes que permiten mostrar un mensaje, en texto o gráfico, de tal manera que el usuario tenga una idea más clara de cómo interactuar con la aplicación Etiqueta Etiqueta

JLabel (Etiqueta) Declarar la etiqueta private JLabel etiqueta1; Crear la etiqueta Se tienen varias formas etiqueta1=new JLabel( Texto de la etiqueta ); contenedor.add(etiqueta1);

JLabel (Etiqueta) Declarar la etiqueta private JLabel etiqueta1; Crear la etiqueta Se tienen varias formas etiqueta1=new JLabel( Texto de la etiqueta ); contenedor.add(etiqueta1); contenedor.add(etiqueta1); Inicialmente el contenedor está vacío

JLabel (Etiqueta) Declarar la etiqueta private JLabel etiqueta1; Crear la etiqueta Se tienen varias formas etiqueta1=new JLabel( Texto de la etiqueta ); etiqueta1.settooltiptext( "Esta es la etiqueta 1" ); contenedor.add(etiqueta1);

JLabel (Etiqueta) Declarar la etiqueta private JLabel etiqueta1; Crear la etiqueta Se tienen varias formas etiqueta1=new JLabel( Texto de la etiqueta ); etiqueta1.settooltiptext( "Esta es la etiqueta 1" ); contenedor.add(etiqueta1); El método settooltiptext permite establecer el texto que se mostrará en caso de que el usuario pase el mouse por encima de la etiqueta

JLabel (Etiqueta) Declarar la etiqueta private JLabel etiqueta1; Crear la etiqueta Se tienen varias formas etiqueta1=new JLabel( Texto de la etiqueta ); etiqueta1.settooltiptext( "Esta es la etiqueta 1" ); contenedor.add(etiqueta1);

Otra forma consiste en crear una etiqueta con icono Icon imagen = new ImageIcon( "image1.gif" ); etiqueta2 = new JLabel( "Etiqueta con texto e icono ); etiqueta2.seticon(imagen); etiqueta2.sethorizontaltextposition(swingconstants.right); etiqueta2.settooltiptext( "Esta es la etiqueta2" ); contenedor.add( etiqueta2 );

Otra forma consiste en crear una etiqueta con icono Icon imagen = new ImageIcon( "image1.gif" ); etiqueta2 = new JLabel( "Etiqueta con texto e icono ); etiqueta2.seticon(imagen); etiqueta2.sethorizontaltextposition(swingconstants.right); etiqueta2.settooltiptext( "Esta es la etiqueta2" ); contenedor.add( etiqueta2 );

Otra forma etiqueta3 = new JLabel(); etiqueta3.settext( "Etiqueta con icono y texto en parte inferior" ); etiqueta3.seticon( imagen ); etiqueta3.setverticaltextposition( SwingConstants.BOTTOM ); etiqueta3.settooltiptext( "Esta es la etiqueta3" ); contenedor.add( etiqueta3 );

Otra forma etiqueta3 = new JLabel(); etiqueta3.settext( "Etiqueta con icono y texto en parte inferior" ); etiqueta3.seticon( imagen ); etiqueta3.setverticaltextposition( SwingConstants.BOTTOM ); etiqueta3.settooltiptext( "Esta es la etiqueta3" ); contenedor.add( etiqueta3 ); El texto debe aparecer debajo del icono

Otra forma etiqueta3 = new JLabel(); etiqueta3.settext( "Etiqueta con icono y texto en parte inferior" ); etiqueta3.seticon( imagen ); etiqueta3.setverticaltextposition( SwingConstants.BOTTOM ); etiqueta3.settooltiptext( "Esta es la etiqueta3" ); contenedor.add( etiqueta3 ); Las constantes de posición horizontal en SwingConstants son: LEFT, CENTER, RIGHT y en la posición vertical son TOP, CENTER, BOTTOM

Otra forma etiqueta3 = new JLabel(); etiqueta3.settext( "Etiqueta con icono y texto en parte inferior" ); etiqueta3.seticon( imagen ); etiqueta3.setverticaltextposition( SwingConstants.BOTTOM ); etiqueta3.settooltiptext( "Esta es la etiqueta3" ); contenedor.add( etiqueta3 ); PruebaEtiqueta

Métodos setfont y setforeground etiqueta3 = new JLabel(); etiqueta3.settext( "Etiqueta con icono y texto en parte inferior" ); etiqueta3.seticon( imagen ); etiqueta3.setfont(new Font("Arial", Font.BOLD, 14)); etiqueta3.setforeground(color.black); Se puede cambiar el tipo de fuente, tamaño y color

JTextField y JPasswordField (Campos de texto) Los JTextField son áreas de una sola línea en las que el usuario puede introducir texto mediante el teclado o bien, el programa puede mostrar un resultado Campo de texto en el que el programa muestra un resultado Campo de texto en el que el usuario ingresa datos

JTextField y JPasswordField (Campos de texto) Los JPasswordField son áreas en los que el texto se representa con simbolos * para ocultarlo de otros usuarios JTextField JPasswordField

JTextField (Campo de texto) Declarar el campo private JTextField campotexto1; Crear el campo Se tienen varias formas campotexto1=new JTextField(10); contenedor.add(campotexto1);

JTextField (Campo de texto) Declarar el campo private JTextField campotexto1; Crear el campo Se tienen varias formas campotexto1=new JTextField(10); contenedor.add(campotexto1); Crea un campo de texto con 10 columnas

JTextField (Campo de texto) Declarar el campo private JTextField campotexto2; Crear el campo Se tienen varias formas campotexto2=new JTextField( Escriba el texto aquí ); contenedor.add(campotexto2);

JTextField (Campo de texto) Declarar el campo private JTextField campotexto2; Crear el campo Se tienen varias formas campotexto2=new JTextField( Escriba el texto aquí ); contenedor.add(campotexto2); Crea un campo de texto con texto predeterminado. El tamaño del campo estará dado por la longitud del mensaje

JTextField (Campo de texto) Declarar el campo private JTextField campotexto2; Crear el campo Se tienen varias formas campotexto2=new JTextField( Escriba el texto aquí,20); contenedor.add(campotexto2); Cuando se crea un campo de texto con texto predeterminado, el tamaño del campo queda determinado por la longitud del mensaje, si se quiere establecer un valor diferente se puede utilizar este constructor

JTextField (Campo de texto) Declarar el campo private JTextField campotexto3; Crear el campo Se tienen varias formas campotexto3=new JTextField( Campo de texto no editable,20); campotexto3.seteditable(false); contenedor.add(campotexto3);

JTextField (Campo de texto) Declarar el campo private JTextField campotexto3; Crear el campo Se tienen varias formas campotexto3=new JTextField( Campo de texto no editable,20); campotexto3.seteditable(false); contenedor.add(campotexto3); Crea un campo de texto no editable, es decir, no se puede cambiar su contenido hasta que se ejecute el comando campotexto3.seteditable(true);

JPasswordField Declarar el campo private JPasswordField campocontraseña; Crear el campo Se tienen los mismos constructores que para JTextField campocontraseña=new JPasswordField(6); contenedor.add(campocontraseña); Crea un campo para contraseña

Eventos y metáfora del oyente Java utiliza la metáfora del oyente para indicar que cualquier GUI está escuchando continuamente que suceda un evento Los eventos que pueden ocurrir en una GUI son: Hacer clic sobre un botón Completar un campo de texto y hacer clic Hacer clic sobre una opción de un menú Ejecutar un comando con teclado

Eventos y metáfora del oyente Los oyentes se han clasificado de acuerdo al componente que genera los eventos y se tienen interfaces que ayudan a manejar tales eventos ActionListener MouseListener ItemListener KeyListener

Tipo de evento ActionEvent MouseEvent KeyEvent ItemEvent Interfaz ActionListener MouseListener, MouseMotionListener KeyListener ItemListener

Eventos y metáfora del oyente Cada componente que pueda generar un evento, debe tener un manejador que indique las acciones que deben ocurrir si se genera un evento

JTextField y JPasswordField (Campos de texto) Los campos de texto, a diferencia de las etiquetas, generan eventos!!! Cuando se escribe en el campo de texto y se da Enter, se genera un evento Concepto de FOCO: es el componente de la GUI que está actualmente siendo utilizado, cuando un campo de texto genera un evento, se dice que tiene el foco

Recuerde los oyentes (interfaces) ActionListener MouseListener ItemListener KeyListener Entre estos, un campo de texto genera un evento de acción (ActionEvent) Utilizar un objeto manejador de una clase que implemente la interfaz ActionListener!!!

Algunos métodos de las clases JTextField y JPasswordField Método settext(mensaje) gettext() addactionlistener(manejador) Descripción Permite colocar un mensaje de tipo String en el campo Permite obtener el valor escrito en el campo Adicionar el manejador de eventos al campo. El manejador es un objeto de una clase que implemente la interfaz ActionListener

Para que una aplicación pueda capturar los eventos que allí se generen debe: -Crear la clase que implemente la interfaz -Crear un objeto de esa clase (manejador) -Registrar el manejador en cada componente que pueda generar un evento del tipo considerado en la interfaz

private class ManejadorCampoTexto implements ActionListener { public void actionperformed( ActionEvent evento ) { if ( evento.getsource() == campotexto1 ) { //Instrucciones que se deben ejecutar si la fuente del evento fue el campotexto1 // fin del método actionperformed // fin de la clase interna privada ManejadorCampoTexto

private class ManejadorCampoTexto implements ActionListener { public void actionperformed( ActionEvent evento ) { La clase ManejadorCampoTexto implementa ActionListener if ( evento.getsource() == campotexto1 ) { //Instrucciones que se deben ejecutar si la fuente del evento fue el campotexto1 // fin del método actionperformed // fin de la clase interna privada ManejadorCampoTexto

private class ManejadorCampoTexto implements ActionListener { public void actionperformed( ActionEvent evento ) { Método que maneja un evento ActionEvent if ( evento.getsource() == campotexto1 ) { //Instrucciones que se deben ejecutar si la fuente del evento fue el campotexto1 // fin del método actionperformed // fin de la clase interna privada ManejadorCampoTexto

private class ManejadorCampoTexto implements ActionListener { public void actionperformed( ActionEvent evento ) { if ( evento.getsource() == campotexto1 ) { Si la fuente del evento es el campotexto1 //Instrucciones que se deben ejecutar si la fuente del evento fue el campotexto1 // fin del método actionperformed // fin de la clase interna privada ManejadorCampoTexto

private class ManejadorCampoTexto implements ActionListener { public void actionperformed( ActionEvent evento ) { if ( evento.getsource() == campotexto1 ) { //Instrucciones que se deben ejecutar si la fuente del evento fue el campotexto1 if ( evento.getsource() == campotexto2 ) { //Instrucciones que se deben ejecutar si la fuente del evento fue el campotexto2 // fin del método actionperformed // fin de la clase interna privada ManejadorCampoTexto

Para que una aplicación pueda capturar los eventos que allí se generen debe: Crear la clase que implemente la interfaz Se puede colocar en el mismo archivo de la GUI Crear un objeto de esa clase (manejador) ManejadorCampoTexto manejador = new ManejadorCampoTexto(); Registrar el manejador en cada componente que pueda generar un evento del tipo considerado en la interfaz campotexto1.addactionlistener( manejador ); campotexto2.addactionlistener( manejador ); campotexto3.addactionlistener( manejador ); campocontraseña.addactionlistener( manejador );

Para que una aplicación pueda capturar los eventos que alli se generen debe: Crear la clase que implemente la interfaz Se puede colocar en el mismo archivo de la GUI Crear un objeto de esa clase (manejador) ManejadorCampoTexto manejador = new ManejadorCampoTexto(); Registrar el manejador en cada componente que pueda generar un evento del tipo considerado en la interfaz campotexto1.addactionlistener( manejador ); campotexto2.addactionlistener( manejador ); campotexto3.addactionlistener( manejador ); campocontraseña.addactionlistener( manejador ); PruebaCampoTexto

Problema: Desarrolle un traductor Español Inglés con dos campos de texto, de tal forma que cuando se escriba un palabra en uno de los campos y se de enter, aparezca la traducción en el otro campo de texto. Se deben considerar 5 palabras.

Problema: Desarrolle una GUI con una etiqueta y un campo de texto. El contenido inicial de la etiqueta es el número 0. Cada vez que se de enter en el campo, se mostrará en la etiqueta la cantidad de veces que esto ha ocurrido. Utilice tamaño 40 para el texto en la etiqueta.

Problema: Desarrolle una GUI con una etiqueta y un campo de texto. El contenido inicial de la etiqueta es el número 0. Cada vez que se de enter en el campo, se mostrará en la etiqueta la cantidad de veces que esto ha ocurrido. Utilice tamaño 40 para el texto en la etiqueta. String.valueOf( int var ) : convierte un entero a String

JButton (Botón) Es un componente en el que el usuario hace clic para desencadenar cierta acción Un programa puede utilizar varios tipos de botones -Botones de comando -Casillas de verificación -Botones interruptores -Botones de opción

JButton (Botón) Declarar el botón private JButton botonsimple; Crear el campo Se tienen varias formas botonsimple=new JButton( Botón simple ); contenedor.add(botonsimple);

JButton (Botón) Declarar el botón private JButton botonsimple; Crear el campo Se tienen varias formas botonsimple=new JButton( Botón simple ); contenedor.add(botonsimple); Botón que solo tiene texto

JButton (Botón) Declarar el botón private JButton botonsimple; Crear el campo Se tienen varias formas Icon image1 = new ImageIcon( "image6.gif" ); Icon image2 = new ImageIcon( "image7.gif" ); botonelegante = new JButton( "Botón elegante", image1 ); botonelegante.setrollovericon( image2 ); botonelegante.settooltiptext( "Muestra un mensaje" ); botonelegante.setmnemonic('m'); contenedor.add( botonelegante );

JButton (Botón) Declarar el botón private JButton botonsimple; Crear el campo Se tienen varias formas Icon image1 = new ImageIcon( "image6.gif" ); Icon image2 = new ImageIcon( "image7.gif" ); botonelegante = new JButton( "Botón elegante", image1 ); botonelegante.setrollovericon( image2 ); botonelegante.settooltiptext( "Muestra un mensaje" ); botonelegante.setmnemonic('m'); contenedor.add( botonelegante ); Imagen inicial del botón

JButton (Botón) Declarar el botón private JButton botonsimple; Crear el campo Se tienen varias formas Icon image1 = new ImageIcon( "image6.gif" ); Icon image2 = new ImageIcon( "image7.gif" ); botonelegante = new JButton( "Botón elegante", image1 ); botonelegante.setrollovericon( image2 ); botonelegante.settooltiptext( "Muestra un mensaje" ); botonelegante.setmnemonic('m'); contenedor.add( botonelegante ); Imagen cuando se pase el mouse por encima del botón

JButton (Botón) Declarar el botón private JButton botonsimple; Crear el campo Se tienen varias formas Icon image1 = new ImageIcon( "image6.gif" ); Icon image2 = new ImageIcon( "image7.gif" ); botonelegante = new JButton( "Botón elegante", image1 ); botonelegante.setrollovericon( image2 ); botonelegante.settooltiptext( "Muestra un mensaje" ); botonelegante.setmnemonic('m'); contenedor.add( botonelegante ); Un nemómico es un atajo con teclado

Se tienen varias formas Icon image1 = new ImageIcon( "image6.gif" ); Icon image2 = new ImageIcon( "image7.gif" ); botonelegante = new JButton( "Botón elegante", image1 ); botonelegante.setrollovericon( image2 ); botonelegante.settooltiptext( "Muestra un mensaje" ); botonelegante.setmnemonic('m'); contenedor.add( botonelegante ); Botón inicial Botón cuando se pasa el mouse por encima

JButton (Botón) Un botón (de comando) genera un evento ActionEvent cuando el usuario hace clic en él Utilizar un objeto manejador de una clase que implemente la interfaz ActionListener!!!

private class ManejadorBoton implements ActionListener { // manejar evento de botón public void actionperformed( ActionEvent evento ) { if (evento.getsource()==botonsimple) JOptionPane.showMessageDialog( null, "Usted oprimió el boton simple"); if (evento.getsource()==botonelegante) JOptionPane.showMessageDialog( null, "Usted oprimió el boton elegante"); // fin de la clase interna privada ManejadorBoton

private class ManejadorBoton implements ActionListener { // manejar evento de botón public void actionperformed( ActionEvent evento ) { if (evento.getsource()==botonsimple) JOptionPane.showMessageDialog( null, "Usted oprimió el boton simple"); if (evento.getsource()==botonelegante) JOptionPane.showMessageDialog( null, "Usted oprimió el boton elegante"); // fin de la clase interna privada ManejadorBoton PruebaBoton

Problema: Modifique la GUI anterior de tal manera que se indique la cantidad de veces que se ha oprimido cada botón

JButton (Botón) Método setenabled() Permite habilitar o deshabilitar un botón nombreboton.setenabled(false); Deshabilita el botón, no ejecuta el oyente

JButton (Botón) Método setenabled() Permite habilitar o deshabilitar un botón nombreboton.setenabled(false); Deshabilita el botón, no ejecuta el oyente PruebaBoton2

Problema: Desarrolle una GUI que tenga dos botones. Inicialmente uno de los dos está deshabilitado pero se puede habilitar si se hace clic en el segundo botón. Si esto ocurre, el botón dos se deshabilita y solo se podrá habilitar si se hace clic en el botón uno.

Problema: Desarrolle el traductor con botones. Un botón para traducir a inglés y otro para alemán

JCheckBox (Casilla de verificación) En un checkbox, se tienen varias casillas, se pueden marcar todas

JCheckBox (Casilla de verificacion) Un ChekBox genera un evento ItemEvent cuando el usuario hace clic en él Utilizar un objeto manejador de una clase que implemente la interfaz ItemListener!!!

JChekbox (Casilla de verificación) Declarar private JChekBox negrita, cursiva; Crear negrita = new JCheckBox( "Negrita" ); contenedor.add( negrita ); cursiva = new JCheckBox( "Cursiva" ); contenedor.add( cursiva );

JChekbox (Casilla de verificacion) Declarar private JChekBox negrita, cursiva; Crear negrita = new JCheckBox( "Negrita" ); contenedor.add( negrita ); cursiva = new JCheckBox( "Cursiva" ); contenedor.add( cursiva ); ManejadorCasillaVerificacion manejador = new ManejadorCasillaVerificacion(); negrita.additemlistener( manejador ); cursiva.additemlistener( manejador ); Se adiciona el manejador, un objeto de una clase que implementa la interfaz ItemListener, por medio del método additemlistener

private class ManejadorCasillaVerificacion implements ItemListener { private int valnegrita = Font.PLAIN; private int valcursiva = Font.PLAIN; // responder a eventos de casilla de verificación public void itemstatechanged( ItemEvent evento ) { // procesar eventos de casilla de verificación negrita if ( evento.getsource() == negrita ) valnegrita = negrita.isselected()? Font.BOLD : Font.PLAIN; // procesar eventos de casilla de verificación cursiva if ( evento.getsource() == cursiva ) valcursiva = cursiva.isselected()? Font.ITALIC : Font.PLAIN; // establecer tipo de letra del campo de texto campo.setfont( new Font( "Serif", valnegrita + valcursiva, 14 ) ); // fin del método itemstatechanged // fin de la clase interna privada ManejadorCasillaVerificacion

private class ManejadorCasillaVerificacion implements ItemListener { Se implementa la interfaz ItemListener private int valnegrita = Font.PLAIN; private int valcursiva = Font.PLAIN; // responder a eventos de casilla de verificación public void itemstatechanged( ItemEvent evento ) { // procesar eventos de casilla de verificación negrita if ( evento.getsource() == negrita ) valnegrita = negrita.isselected()? Font.BOLD : Font.PLAIN; // procesar eventos de casilla de verificación cursiva if ( evento.getsource() == cursiva ) valcursiva = cursiva.isselected()? Font.ITALIC : Font.PLAIN; // establecer tipo de letra del campo de texto campo.setfont( new Font( "Serif", valnegrita + valcursiva, 14 ) ); // fin del método itemstatechanged // fin de la clase interna privada ManejadorCasillaVerificacion

private class ManejadorCasillaVerificacion implements ItemListener { private int valnegrita = Font.PLAIN; private int valcursiva = Font.PLAIN; // responder a eventos de casilla de verificación public void itemstatechanged( ItemEvent evento ) { // procesar eventos de casilla de verificación negrita if ( evento.getsource() == negrita ) valnegrita = negrita.isselected()? Font.BOLD : Font.PLAIN; El evento ItemEvent se maneja por medio del método itemstatechanged // procesar eventos de casilla de verificación cursiva if ( evento.getsource() == cursiva ) valcursiva = cursiva.isselected()? Font.ITALIC : Font.PLAIN; // establecer tipo de letra del campo de texto campo.setfont( new Font( "Serif", valnegrita + valcursiva, 14 ) ); // fin del método itemstatechanged // fin de la clase interna privada ManejadorCasillaVerificacion

private class ManejadorCasillaVerificacion implements ItemListener { private int valnegrita = Font.PLAIN; private int valcursiva = Font.PLAIN; // responder a eventos de casilla de verificación public void itemstatechanged( ItemEvent evento ) { // procesar eventos de casilla de verificación negrita if ( evento.getsource() == negrita ) valnegrita = negrita.isselected()? Font.BOLD : Font.PLAIN; // procesar eventos de casilla de verificación cursiva if ( evento.getsource() == cursiva ) valcursiva = cursiva.isselected()? Font.ITALIC : Font.PLAIN; // establecer tipo de letra del campo de texto campo.setfont( new Font( "Serif", valnegrita + valcursiva, 14 ) ); // fin del método itemstatechanged PruebaCasillaVerificacion // fin de la clase interna privada ManejadorCasillaVerificacion

JRadioButton (Botones de opción) En un RadioButton, solo una de las opciones se puede seleccionar al tiempo

JRadioButton (Botones de opción) Un RadioButton genera un evento ItemEvent cuando el usuario hace clic en él Utilizar un objeto manejador de una clase que implemente la interfaz ItemListener!!!

JRadioButton (Botones de opción) Declarar private JRadioButton botonsimple, botonnegrita private ButtonGruop grupobotonesopcion; Como existe una relación entre los botones (no se puede seleccionar más de un botón al tiempo), se debe agrupar en un componente ButtonGroup Después de crear cada RadioButton, se deben adicionar a un único ButtonGroup

JRadioButton (Botones de opción) Crear botonsimple = new JRadioButton( "Simple", true ); contenedor.add( botonsimple ); botonnegrita = new JRadioButton( "Negrita", false ); contenedor.add( botonnegrita ); botoncursiva = new JRadioButton( "Cursiva", false ); contenedor.add( botoncursiva ); botonnegritacursiva = new JRadioButton( "Negrita/Cursiva", false ); contenedor.add( botonnegritacursiva );

JRadioButton (Botones de opción) Crear botonsimple = new JRadioButton( "Simple", true ); contenedor.add( botonsimple ); Se puede indicar cuál de las opciones estará activa en el momento de iniciar la aplicación botonnegrita = new JRadioButton( "Negrita", false ); contenedor.add( botonnegrita ); botoncursiva = new JRadioButton( "Cursiva", false ); contenedor.add( botoncursiva ); botonnegritacursiva = new JRadioButton( "Negrita/Cursiva", false ); contenedor.add( botonnegritacursiva );

JRadioButton (Botones de opción) Crear botonsimple = new JRadioButton( "Simple", true ); contenedor.add( botonsimple ); botonnegrita = new JRadioButton( "Negrita", false ); contenedor.add( botonnegrita ); botoncursiva = new JRadioButton( "Cursiva", false ); contenedor.add( botoncursiva ); botonnegritacursiva = new JRadioButton( "Negrita/Cursiva", false ); contenedor.add( botonnegritacursiva ); ManejadorBotonOpcion manejador = new ManejadorBotonOpcion(); botonsimple.additemlistener(manejador); botonnegrita.additemlistener(manejador); botoncursiva.additemlistener(manejador); botonnegritacursiva.additemlistener(manejador); Se adiciona el oyente a cada RadioButton

botonsimple = new JRadioButton( "Simple", true ); contenedor.add( botonsimple ); botonnegrita = new JRadioButton( "Negrita", false ); contenedor.add( botonnegrita ); botoncursiva = new JRadioButton( "Cursiva", false ); contenedor.add( botoncursiva ); botonnegritacursiva = new JRadioButton( "Negrita/Cursiva", false ); contenedor.add( botonnegritacursiva ); ManejadorBotonOpcion manejador = new ManejadorBotonOpcion(); botonsimple.additemlistener(manejador); botonnegrita.additemlistener(manejador); botoncursiva.additemlistener(manejador); botonnegritacursiva.additemlistener(manejador); grupobotonesopcion = new ButtonGroup(); grupobotonesopcion.add( botonsimple ); grupobotonesopcion.add( botonnegrita ); grupobotonesopcion.add( botoncursiva ); grupobotonesopcion.add( botonnegritacursiva ); Se crea el ButtonGroup y se le adicionan los RadioButton

botonsimple = new JRadioButton( "Simple", true ); contenedor.add( botonsimple ); botonnegrita = new JRadioButton( "Negrita", false ); contenedor.add( botonnegrita ); botoncursiva = new JRadioButton( "Cursiva", false ); contenedor.add( botoncursiva ); botonnegritacursiva = new JRadioButton( "Negrita/Cursiva", false ); contenedor.add( botonnegritacursiva ); ManejadorBotonOpcion manejador = new ManejadorBotonOpcion(); botonsimple.additemlistener(manejador); botonnegrita.additemlistener(manejador); botoncursiva.additemlistener(manejador); botonnegritacursiva.additemlistener(manejador); grupobotonesopcion = new ButtonGroup(); grupobotonesopcion.add( botonsimple ); grupobotonesopcion.add( botonnegrita ); grupobotonesopcion.add( botoncursiva ); grupobotonesopcion.add( botonnegritacursiva ); PruebaBotonOpcion Ver Oyente

JComboBox (Cuadro combinado) Un ComboBox, conocido como lista desplegable proporciona una lista de elementos de la cual el usuario puede seleccionar solamente uno Los objetos ComboBox generan eventos ItemEvent cuando el usuario hace clic en una de las opciones de la lista Utilizar un objeto manejador de una clase que implemente la interfaz ItemListener!!!

JComboBox (Cuadro combinado) Declarar private JComboBox cuadrocombimagenes; private String nombres[] = { "image3.gif", "image10.gif", "image5.gif", "image8.gif" ;

JComboBox (Cuadro combinado) Declarar private JComboBox cuadrocombimagenes; private String nombres[] = { "image3.gif", "image10.gif", "image5.gif", "image8.gif" ; Se debe crear una arreglo con los datos que aparecerán en la lista

JComboBox (Cuadro combinado) Crear cuadrocombimagenes = new JComboBox( nombres ); cuadrocombimagenes.setmaximumrowcount(4); Se pasa al constructor el arreglo con los datos que aparecerán en la lista

JComboBox (Cuadro combinado) Crear cuadrocombimagenes = new JComboBox( nombres ); cuadrocombimagenes.setmaximumrowcount(4); Se establece la cantidad máxima de ítems que puede tener la lista sin necesitar la barra de desplazamiento

JComboBox (Cuadro combinado) Crear cuadrocombimagenes = new JComboBox( nombres ); cuadrocombimagenes.setmaximumrowcount(2); Aparece la barra si se coloca el valor en 2 y hay 4 elementos en la lista

private class ManejadorCombo implements ItemListener { public void itemstatechanged( ItemEvent evento ) { if ( evento.getstatechange() == ItemEvent.SELECTED ){ int index=cuadrocombimagenes.getselectedindex(); System.out.println("Seleccionó el item " + index + " en la lista"); etiqueta.seticon( iconos[index ] );

private class ManejadorCombo implements ItemListener { public void itemstatechanged( ItemEvent evento ) { if ( evento.getstatechange() == ItemEvent.SELECTED ){ int index=cuadrocombimagenes.getselectedindex(); System.out.println("Seleccionó el item " + index + " en la lista"); etiqueta.seticon( iconos[index ] ); Método que permite conocer que un ítem cambio de estado

private class ManejadorCombo implements ItemListener { public void itemstatechanged( ItemEvent evento ) { if ( evento.getstatechange() == ItemEvent.SELECTED ){ int index=cuadrocombimagenes.getselectedindex(); System.out.println("Seleccionó el item " + index + " en la lista"); etiqueta.seticon( iconos[index ] ); Método del ComboBox que permite saber cuál de los ítems fue seleccionado. Retorna el índice (comenzando en 0)

private class ManejadorCombo implements ItemListener { public void itemstatechanged( ItemEvent evento ) { if ( evento.getstatechange() == ItemEvent.SELECTED ){ int index=cuadrocombimagenes.getselectedindex(); System.out.println("Seleccionó el item " + index + " en la lista"); etiqueta.seticon( iconos[index ] ); PruebaCuadroComb

JList (listas de selección) Una lista de selección permite al usuario seleccionar uno (Listas de selección simple) o varios elementos de una lista (Listas de selección múltiple) Las listas de selección se combinan con la clase JScrollPane JList JScrollPane

Una lista de selección genera eventos ListSelectionEvent cuando el usuario hace clic en una de las opciones de la lista Utilizar un objeto manejador de una clase que implemente la interfaz ListSelectionListener!!! Para adicionar este escucha se debe utilizar el método addlistselectionlistener

JList (listas de selección) Declarar private JList listacolores; private JScrollPane scroll; private final String nombrescolores[] = { "Negro", "Azul", "Cyan", "Gris oscuro, "Gris", "Verde", "Gris claro", "Magenta", "Naranja", "Rosa", "Rojo", "Blanco", "Amarillo" ; Se debe crear un arreglo con los datos que aparecerán en la lista

JList (listas de selección) Crear listacolores = new JList( nombrescolores ); listacolores.setvisiblerowcount( 5 ); listacolores.setselectionmode( ListSelectionModel.SINGLE_SELECTION ); scroll = new JScrollPane(listaColores); contenedor.add(scroll);

JList (listas de selección) Crear listacolores = new JList( nombrescolores ); listacolores.setvisiblerowcount( 5 ); listacolores.setselectionmode( ListSelectionModel.SINGLE_SELECTION ); scroll = new JScrollPane(listaColores); contenedor.add(scroll); Se pasa al constructor la lista con los nombres Se adiciona la lista a un scroll Se especifica que es una lista de selección simple

JList (listas de selección) Crear listacolores = new JList( nombrescolores ); listacolores.setvisiblerowcount( 5 ); listacolores.setselectionmode( ListSelectionModel.SINGLE_SELECTION ); scroll = new JScrollPane(listaColores); contenedor.add(scroll); ManejadorLista manejador = new ManejadorLista(); listacolores.addlistselectionlistener(manejador);

private class ManejadorLista implements ListSelectionListener { public void valuechanged( ListSelectionEvent evento ) { int index=listacolores.getselectedindex(); contenedor.setbackground(colores[index] ); Se implementa el método valuechange de la interfaz ListSelectionListener

private class ManejadorLista implements ListSelectionListener { public void valuechanged( ListSelectionEvent evento ) { int index=listacolores.getselectedindex(); contenedor.setbackground(colores[index] ); PruebaLista

JList (listas de selección) JList de selección múltiple JList de selección simple

JList (listas de selección) Crear listacolores = new JList( nombrescolores ); listacolores.setvisiblerowcount( 5 ); listacolores.setselectionmode(listselectionmodel.multiple_interval_selection); scroll1 = new JScrollPane(listaColores); contenedor.add(scroll1); Se especifica que se permite selección múltiple

public class ManejadorMultiple implements ActionListener { public void actionperformed( ActionEvent evento ) { listacopia.setlistdata( listacolores.getselectedvalues() ); Se captura el evento por medio del botón Establecer los datos que aparecerán en la lista Retorna los valores de listacolores seleccionados

public class ManejadorMultiple implements ActionListener { public void actionperformed( ActionEvent evento ) { listacopia.setlistdata( listacolores.getselectedvalues() ); PruebaSeleccionMultiple Explicar ancho y alto de la lista que no tiene elementos