SlideShare una empresa de Scribd logo
1 de 27
Programación 2
Tema: 3 Programación Visual
PhD(c). Luis Fernando Aguas Bucheli
+593 984015184
@Aguaszoft
Laguas@uisrael.edu.ec
Tu voluntad se encuentra siempre bajo tu control,
por lo que nada puede detenerte
Objetivo
1. Adquirir los conceptos
básicos relacionados con
la GUI
2. Reconocer las
características de la GUI
● 3.2 Diseño de GUI
Contenido
ODS
● 4.3 De aquí a 2030, asegurar
el acceso igualitario de todos
los hombres y las mujeres a
una formación técnica,
profesional y superior de
calidad, incluida la enseñanza
universitaria
META
3.2 Diseño de GUI
Construcción de una GUI
•diseñar la interfaz de acuerdo a las
especificaciones
•implementar la interfaz usando las
facilidades provistas por el lenguaje.
Botones
Éste es el aspecto cuando se aprieta rojo o verde:
Desarrolle una aplicación que permita establecer el color
de fondo de una ventana. El color será rojo o verde de
acuerdo al botón que se apriete.
La ventana inicialmente debe aparecer así:
//importar paquetes
…
class GuiFondoRojoVerde extends JFrame {
/*Declarar los BOTONES*/
…
public GuiFondoRojoVerde (){
/*Establecer los valores de los atributos del frame*/
…
/*Crear los BOTONES*/
…
/*Crear y registrar los oyentes para los BOTONES*/
…
/*Insertar los BOTONES en el panel de contenido*/
…
}
/*definir clases para establecer el comportamiento de los
BOTONES*/
…
}
Botones
La estructura del código favorece
la legibilidad
//importar paquetes
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
…
Java brinda muchas facilidades a través de paquetes.
El programador importa solo los paquetes que necesita.
El tamaño del código que se genera al compilar depende
solo de las facilidades básicas y los paquetes importados.
Botones
//importar paquetes
…
class GuiFondoRojoVerde extends JFrame {
…
}
Un objeto de clase GuiFondoRojoVerde es también una
instancia de JFrame. Como todo frame un objeto de clase
GuiFondoRojoVerde tiene como atributos el borde, la
barra de título y un panel de contenido.
Botones
//importar paquetes
…
class GuiFondoRojoVerde extends JFrame {
/*Declarar los botones*/
private JButton botonRojo, botonVerde;
…
}
Los atributos de instancia de la clase GuiFondoRojoVerde
son dos variables de la clase JButton provista por Swing.
Botones
public GuiFondoRojoVerde (){
/*Declarar los botones*/
…
/*Establecer los valores de los atributos*/
setLayout(new FlowLayout());
setSize(200, 120);
setDefaultCloseOperation(EXIT_ON_CLOSE);
…
}
Botones
La clase JFrame brinda servicios que permiten establecer los
valores de los atributos del frame, por ejemplo el diagramado
y el tamaño.
public GuiFondoRojoVerde (){
/*Declarar los botones*/
…
/*Establecer los valores de los atributos*/
…
/*Crear los botones*/
botonRojo = new JButton("Rojo");
botonVerde = new JButton("Verde");
Por cada atributo de instancia que corresponde a una
componente gráfica de la GUI, creamos un objeto gráfico.
Botones
public GuiFondoRojoVerde (){
…
/*Crear los botones*/
botonRojo = new JButton("Rojo");
botonVerde = new JButton("Verde");
/*Crear y registrar los oyentes para los botones*/
OyenteBotonR ponerRojo = new OyenteBotonR();
botonRojo.addActionListener(ponerRojo);
Para que un botón sea reactivo debe registrarse a un
objeto oyente.
El programador implementa cada clase de un oyente de
acuerdo al comportamiento que debe exhibir el botón.
Botones
public GuiFondoRojoVerde (){
…
/*Crear los botones*/
botonRojo = new JButton("Rojo");
botonVerde = new JButton("Verde");
/*Crear y registrar los oyentes para los botones*/
OyenteBotonR ponerRojo = new OyenteBotonR();
botonRojo.addActionListener(ponerRojo);
OyenteBotonV ponerVerde = new OyenteBotonV();
botonVerde.addActionListener(ponerVerde);
Botones
public GuiFondoRojoVerde (){
…
/*Insertar los botones en el panel de contenido*/
getContentPane().add(botonRojo);
getContentPane().add(botonVerde);
}
Para que los botones sean visibles deben insertarse en
un contenedor, en este caso el panel de contenido del
frame
Botones
/*definir clases para establecer el comportamiento de
los botones */
class OyenteBotonR implements ActionListener {
public void actionPerformed (ActionEvent event){
getContentPane().setBackground(Color.red);
}
}
Para que un botón reaccione ante una acción del usuario,
debe estar registrado a una clase que implemente a la
interface ActionListener.
Implementar una interface implica definir sus métodos.
En este caso el método actionPerformed que recibe
como parámetro un objeto de clase ActionEvent.
Botones
/* definir clases para establecer el comportamiento de
los botones */
class OyenteBotonR implements ActionListener {
public void actionPerformed(ActionEvent event){
getContentPane().setBackground(Color.red);
}
}
class OyenteBotonV implements ActionListener {
public void actionPerformed(ActionEvent event){
getContentPane().setBackground(Color.green);
}
}
}
Botones
En este ejemplo, cada oyente modifica el color del panel de
contenido de acuerdo al botón que el usuario oprime.
import java.awt.*;
class FondoBotones {
public static void main(String args[ ]) {
GuiFondoRojoVerde f= new GuiFondoRojoVerde();
f.setVisible(true);
}
}
Botones
Botones
Desarrolle una aplicación que permita establecer el
color de un panel. El color será rojo o verde de acuerdo
al botón que se apriete.
Por ejemplo, cuando se oprima el botón verde la
ventana debe aparecer:
//importar paquetes
…
class GuiPanelRojoVerde extends JFrame {
/*Declarar los botones y los paneles */
…
public GuiPanelRojoVerde (){
/*Establecer los valores de los atributos */
…
/*Crear los botones y los paneles*/
…
/*Crear y registrar los oyentes para los botones*/
…
/*Insertar los botones en el panel de botones y los paneles
en el panel de contenido*/
…
}
/*definir clases para los oyentes*/
…
}
Botones
//importar paquetes
…
class GuiPanelRojoVerde extends JFrame {
/*Declarar los botones y los paneles*/
private JButton botonRojo, botonVerde;
private JPanel panelColor, panelBotones;
…
}
Los atributos de GuiPanelRojoVerde son dos botones y
dos paneles.
Botones
public GuiPanelRojoVerde (){
/*Establecer los valores de los atributos */
…
/*Crear los botones y los paneles*/
botonRojo = new JButton("Rojo");
botonVerde = new JButton("Verde");
panelColor= new JPanel();
panelBotones = new JPanel();
…
}
El orden de estas cuatro instrucciones es irrelevante en
ejecución , pero afecta la legibilidad del código.
Botones
public GuiPanelRojoVerde (){
/*Establecer los valores de los atributos */
…
/*Crear y registrar los oyentes para los botones*/
OyenteBotonR ponerRojo = new OyenteBotonR();
botonRojo.addActionListener(ponerRojo);
OyenteBotonV ponerVerde = new OyenteBotonV();
botonVerde.addActionListener(ponerVerde);
…
}
El orden de estas cuatro instrucciones es irrelevante en
ejecución , pero afecta la legibilidad del código.
Botones
public GuiPanelRojoVerde (){
…
/*Insertar los botones en el panel de botones y
los paneles en el panel de contenido*/
panelBotones.add(botonRojo);
panelBotones.add(botonVerde);
getContentPane().add(panelBotones);
getContentPane().add(panelColor);
El orden de estas instrucciones influye en la apariencia de la
GUI, si se invierten las dos últimas, cambia la distribución de
los paneles, dado que por omisión se establece el
diagramado FlowLayout.
Botones
/*definir clases para los oyentes*/
class OyenteBotonR implements ActionListener {
public void actionPerformed(ActionEvent event){
panelColor.setBackground(Color.red);
}
}
class OyenteBotonV implements ActionListener {
public void actionPerformed(ActionEvent event){
panelColor.setBackground(Color.green);
}
}
}
La clase de cada oyente es interna a la clase que
especializa a JFrame y por lo tanto tiene acceso a los
atributos de instancia de GuiPanelRojoVerde, en
particular a panelColor.
Botones
Gracias
Responsabilidad con pensamiento positivo

Más contenido relacionado

Similar a S6-P2.pptx

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
Robert Wolf
 
Manuales seminario java-manualdejava-sem 3 - 4
Manuales seminario java-manualdejava-sem 3 - 4Manuales seminario java-manualdejava-sem 3 - 4
Manuales seminario java-manualdejava-sem 3 - 4
Robert Wolf
 
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
Robert Wolf
 

Similar a S6-P2.pptx (20)

Eventos
EventosEventos
Eventos
 
Java construye las interfaces gráficas del usuario mediante awt
Java construye las interfaces gráficas del usuario mediante awtJava construye las interfaces gráficas del usuario mediante awt
Java construye las interfaces gráficas del usuario mediante awt
 
Formularios y contenedores
Formularios y contenedoresFormularios y contenedores
Formularios y contenedores
 
Formularios y contenedores
Formularios y contenedoresFormularios y contenedores
Formularios y contenedores
 
Form y container
Form y containerForm y container
Form y container
 
Programación i
Programación iProgramación i
Programación i
 
Miswing 110511215936-phpapp01
Miswing 110511215936-phpapp01Miswing 110511215936-phpapp01
Miswing 110511215936-phpapp01
 
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
 
Eventos
EventosEventos
Eventos
 
6.eventos y swing
6.eventos y swing6.eventos y swing
6.eventos y swing
 
Programa simple java julian
Programa simple java julianPrograma simple java julian
Programa simple java julian
 
Temaswing
TemaswingTemaswing
Temaswing
 
Manuales seminario java-manualdejava-sem 3 - 4
Manuales seminario java-manualdejava-sem 3 - 4Manuales seminario java-manualdejava-sem 3 - 4
Manuales seminario java-manualdejava-sem 3 - 4
 
Java tema06a
Java tema06aJava tema06a
Java tema06a
 
Taller 1 7
Taller 1 7Taller 1 7
Taller 1 7
 
12swing gui
12swing gui12swing gui
12swing gui
 
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
 
PLC y Electroneumática: Codesys Grafcet
PLC y Electroneumática: Codesys GrafcetPLC y Electroneumática: Codesys Grafcet
PLC y Electroneumática: Codesys Grafcet
 
Formularios En Visual Fox Pro
Formularios En Visual Fox ProFormularios En Visual Fox Pro
Formularios En Visual Fox Pro
 
formularios en Visual Foxpro
formularios en Visual Foxproformularios en Visual Foxpro
formularios en Visual Foxpro
 

Más de Luis Fernando Aguas Bucheli (20)

EFC-ISW-Luis Fernando Aguas.pptx
EFC-ISW-Luis Fernando Aguas.pptxEFC-ISW-Luis Fernando Aguas.pptx
EFC-ISW-Luis Fernando Aguas.pptx
 
P-S2.pptx
P-S2.pptxP-S2.pptx
P-S2.pptx
 
EBTS-S1.pptx
EBTS-S1.pptxEBTS-S1.pptx
EBTS-S1.pptx
 
P-S3.pptx
P-S3.pptxP-S3.pptx
P-S3.pptx
 
EBTS-S4.pptx
EBTS-S4.pptxEBTS-S4.pptx
EBTS-S4.pptx
 
P-S4.pptx
P-S4.pptxP-S4.pptx
P-S4.pptx
 
P-S1.pptx
P-S1.pptxP-S1.pptx
P-S1.pptx
 
EBTS-S3.pptx
EBTS-S3.pptxEBTS-S3.pptx
EBTS-S3.pptx
 
EBTS-S2.pptx
EBTS-S2.pptxEBTS-S2.pptx
EBTS-S2.pptx
 
PDIDTI-S7.pptx
PDIDTI-S7.pptxPDIDTI-S7.pptx
PDIDTI-S7.pptx
 
PDIDTI-S4.pptx
PDIDTI-S4.pptxPDIDTI-S4.pptx
PDIDTI-S4.pptx
 
PDIDTI-S2.pptx
PDIDTI-S2.pptxPDIDTI-S2.pptx
PDIDTI-S2.pptx
 
PDIDTI-S1.pptx
PDIDTI-S1.pptxPDIDTI-S1.pptx
PDIDTI-S1.pptx
 
PDIDTI-S8.pptx
PDIDTI-S8.pptxPDIDTI-S8.pptx
PDIDTI-S8.pptx
 
PDIDTI-S6.pptx
PDIDTI-S6.pptxPDIDTI-S6.pptx
PDIDTI-S6.pptx
 
PDIDTI-S5.pptx
PDIDTI-S5.pptxPDIDTI-S5.pptx
PDIDTI-S5.pptx
 
PDIDTI-S3.pptx
PDIDTI-S3.pptxPDIDTI-S3.pptx
PDIDTI-S3.pptx
 
TIC-S4.pptx
TIC-S4.pptxTIC-S4.pptx
TIC-S4.pptx
 
TIC-S3.pptx
TIC-S3.pptxTIC-S3.pptx
TIC-S3.pptx
 
TIC-S2.pptx
TIC-S2.pptxTIC-S2.pptx
TIC-S2.pptx
 

Último

Presentación_ Marco general de las contrataciones públicas.pdf
Presentación_ Marco general de las contrataciones públicas.pdfPresentación_ Marco general de las contrataciones públicas.pdf
Presentación_ Marco general de las contrataciones públicas.pdf
fernandolozano90
 
647913404-06-Partes-principales-de-las-Perforadoras-manuales-1.pdf
647913404-06-Partes-principales-de-las-Perforadoras-manuales-1.pdf647913404-06-Partes-principales-de-las-Perforadoras-manuales-1.pdf
647913404-06-Partes-principales-de-las-Perforadoras-manuales-1.pdf
MirkaCBauer
 
TIPOS DE BASTIDORES Y CARROCERIA EN LA INDUSTRIA AUTOMOTRIZ
TIPOS DE BASTIDORES Y CARROCERIA EN LA INDUSTRIA AUTOMOTRIZTIPOS DE BASTIDORES Y CARROCERIA EN LA INDUSTRIA AUTOMOTRIZ
TIPOS DE BASTIDORES Y CARROCERIA EN LA INDUSTRIA AUTOMOTRIZ
varichard
 
Inmunología AMIR 14va EdiciónNM,NLKKJHKLJHKJLBHLKJH
Inmunología AMIR 14va EdiciónNM,NLKKJHKLJHKJLBHLKJHInmunología AMIR 14va EdiciónNM,NLKKJHKLJHKJLBHLKJH
Inmunología AMIR 14va EdiciónNM,NLKKJHKLJHKJLBHLKJH
Vivafornai
 

Último (20)

Presentación_ Marco general de las contrataciones públicas.pdf
Presentación_ Marco general de las contrataciones públicas.pdfPresentación_ Marco general de las contrataciones públicas.pdf
Presentación_ Marco general de las contrataciones públicas.pdf
 
PRACTICAS_DE_AUTOMATIZACION_industrial (1).pdf
PRACTICAS_DE_AUTOMATIZACION_industrial (1).pdfPRACTICAS_DE_AUTOMATIZACION_industrial (1).pdf
PRACTICAS_DE_AUTOMATIZACION_industrial (1).pdf
 
las humanidades y su impotancia en la formación integral del ingeniero
las humanidades y su impotancia en la formación integral del ingenierolas humanidades y su impotancia en la formación integral del ingeniero
las humanidades y su impotancia en la formación integral del ingeniero
 
Sesión de Clase A dde sistemas de riego y otras obras
Sesión de Clase A dde sistemas de riego y otras obrasSesión de Clase A dde sistemas de riego y otras obras
Sesión de Clase A dde sistemas de riego y otras obras
 
slideshare.vpdfs.com_sensores-magneticos-controles-pptx.pdf
slideshare.vpdfs.com_sensores-magneticos-controles-pptx.pdfslideshare.vpdfs.com_sensores-magneticos-controles-pptx.pdf
slideshare.vpdfs.com_sensores-magneticos-controles-pptx.pdf
 
Cuestionario 20222222222222222222222224.pdf
Cuestionario 20222222222222222222222224.pdfCuestionario 20222222222222222222222224.pdf
Cuestionario 20222222222222222222222224.pdf
 
50870516-hidroponia. descargado en novppt
50870516-hidroponia. descargado en novppt50870516-hidroponia. descargado en novppt
50870516-hidroponia. descargado en novppt
 
REAJUSTE DE PRECIOS EN LOS CONTRATOS ADMINISTRATIVOS DE OBRA PUBLICA PACTADOS...
REAJUSTE DE PRECIOS EN LOS CONTRATOS ADMINISTRATIVOS DE OBRA PUBLICA PACTADOS...REAJUSTE DE PRECIOS EN LOS CONTRATOS ADMINISTRATIVOS DE OBRA PUBLICA PACTADOS...
REAJUSTE DE PRECIOS EN LOS CONTRATOS ADMINISTRATIVOS DE OBRA PUBLICA PACTADOS...
 
CONCEPTOS BASICOS DE ROBOTICA, CLASES DE ROBOTS
CONCEPTOS BASICOS DE ROBOTICA, CLASES DE ROBOTSCONCEPTOS BASICOS DE ROBOTICA, CLASES DE ROBOTS
CONCEPTOS BASICOS DE ROBOTICA, CLASES DE ROBOTS
 
TYPP_Industrialización del Petróleo.pptx
TYPP_Industrialización del Petróleo.pptxTYPP_Industrialización del Petróleo.pptx
TYPP_Industrialización del Petróleo.pptx
 
647913404-06-Partes-principales-de-las-Perforadoras-manuales-1.pdf
647913404-06-Partes-principales-de-las-Perforadoras-manuales-1.pdf647913404-06-Partes-principales-de-las-Perforadoras-manuales-1.pdf
647913404-06-Partes-principales-de-las-Perforadoras-manuales-1.pdf
 
1.1 Los 14 principios del Toyota Way -2024.pdf
1.1 Los 14 principios del Toyota Way -2024.pdf1.1 Los 14 principios del Toyota Way -2024.pdf
1.1 Los 14 principios del Toyota Way -2024.pdf
 
Diseño digital - M. Morris Mano - 3ed.pdf
Diseño digital - M. Morris Mano - 3ed.pdfDiseño digital - M. Morris Mano - 3ed.pdf
Diseño digital - M. Morris Mano - 3ed.pdf
 
DIAGRAMAS PID automatizacion y control.ppt
DIAGRAMAS PID automatizacion y control.pptDIAGRAMAS PID automatizacion y control.ppt
DIAGRAMAS PID automatizacion y control.ppt
 
ESFUERZO EN VIGAS SESIÓN 5 PROBLEMA RESUELTOS.pdf
ESFUERZO EN VIGAS SESIÓN 5 PROBLEMA RESUELTOS.pdfESFUERZO EN VIGAS SESIÓN 5 PROBLEMA RESUELTOS.pdf
ESFUERZO EN VIGAS SESIÓN 5 PROBLEMA RESUELTOS.pdf
 
subestaciones electricas, distribucion de energia
subestaciones electricas, distribucion de energiasubestaciones electricas, distribucion de energia
subestaciones electricas, distribucion de energia
 
Trabajo de cristalografia. año 2024 mes de mayo
Trabajo de cristalografia. año 2024 mes de mayoTrabajo de cristalografia. año 2024 mes de mayo
Trabajo de cristalografia. año 2024 mes de mayo
 
REGLA DE PROBABILIDADES Y REGLA DE BAYES.pptx
REGLA DE PROBABILIDADES  Y REGLA DE BAYES.pptxREGLA DE PROBABILIDADES  Y REGLA DE BAYES.pptx
REGLA DE PROBABILIDADES Y REGLA DE BAYES.pptx
 
TIPOS DE BASTIDORES Y CARROCERIA EN LA INDUSTRIA AUTOMOTRIZ
TIPOS DE BASTIDORES Y CARROCERIA EN LA INDUSTRIA AUTOMOTRIZTIPOS DE BASTIDORES Y CARROCERIA EN LA INDUSTRIA AUTOMOTRIZ
TIPOS DE BASTIDORES Y CARROCERIA EN LA INDUSTRIA AUTOMOTRIZ
 
Inmunología AMIR 14va EdiciónNM,NLKKJHKLJHKJLBHLKJH
Inmunología AMIR 14va EdiciónNM,NLKKJHKLJHKJLBHLKJHInmunología AMIR 14va EdiciónNM,NLKKJHKLJHKJLBHLKJH
Inmunología AMIR 14va EdiciónNM,NLKKJHKLJHKJLBHLKJH
 

S6-P2.pptx

  • 1. Programación 2 Tema: 3 Programación Visual PhD(c). Luis Fernando Aguas Bucheli +593 984015184 @Aguaszoft Laguas@uisrael.edu.ec
  • 2. Tu voluntad se encuentra siempre bajo tu control, por lo que nada puede detenerte
  • 3. Objetivo 1. Adquirir los conceptos básicos relacionados con la GUI 2. Reconocer las características de la GUI ● 3.2 Diseño de GUI Contenido
  • 4. ODS ● 4.3 De aquí a 2030, asegurar el acceso igualitario de todos los hombres y las mujeres a una formación técnica, profesional y superior de calidad, incluida la enseñanza universitaria META
  • 6. Construcción de una GUI •diseñar la interfaz de acuerdo a las especificaciones •implementar la interfaz usando las facilidades provistas por el lenguaje.
  • 7. Botones Éste es el aspecto cuando se aprieta rojo o verde: Desarrolle una aplicación que permita establecer el color de fondo de una ventana. El color será rojo o verde de acuerdo al botón que se apriete. La ventana inicialmente debe aparecer así:
  • 8. //importar paquetes … class GuiFondoRojoVerde extends JFrame { /*Declarar los BOTONES*/ … public GuiFondoRojoVerde (){ /*Establecer los valores de los atributos del frame*/ … /*Crear los BOTONES*/ … /*Crear y registrar los oyentes para los BOTONES*/ … /*Insertar los BOTONES en el panel de contenido*/ … } /*definir clases para establecer el comportamiento de los BOTONES*/ … } Botones La estructura del código favorece la legibilidad
  • 9. //importar paquetes import java.awt.*; import java.awt.event.*; import javax.swing.*; … Java brinda muchas facilidades a través de paquetes. El programador importa solo los paquetes que necesita. El tamaño del código que se genera al compilar depende solo de las facilidades básicas y los paquetes importados. Botones
  • 10. //importar paquetes … class GuiFondoRojoVerde extends JFrame { … } Un objeto de clase GuiFondoRojoVerde es también una instancia de JFrame. Como todo frame un objeto de clase GuiFondoRojoVerde tiene como atributos el borde, la barra de título y un panel de contenido. Botones
  • 11. //importar paquetes … class GuiFondoRojoVerde extends JFrame { /*Declarar los botones*/ private JButton botonRojo, botonVerde; … } Los atributos de instancia de la clase GuiFondoRojoVerde son dos variables de la clase JButton provista por Swing. Botones
  • 12. public GuiFondoRojoVerde (){ /*Declarar los botones*/ … /*Establecer los valores de los atributos*/ setLayout(new FlowLayout()); setSize(200, 120); setDefaultCloseOperation(EXIT_ON_CLOSE); … } Botones La clase JFrame brinda servicios que permiten establecer los valores de los atributos del frame, por ejemplo el diagramado y el tamaño.
  • 13. public GuiFondoRojoVerde (){ /*Declarar los botones*/ … /*Establecer los valores de los atributos*/ … /*Crear los botones*/ botonRojo = new JButton("Rojo"); botonVerde = new JButton("Verde"); Por cada atributo de instancia que corresponde a una componente gráfica de la GUI, creamos un objeto gráfico. Botones
  • 14. public GuiFondoRojoVerde (){ … /*Crear los botones*/ botonRojo = new JButton("Rojo"); botonVerde = new JButton("Verde"); /*Crear y registrar los oyentes para los botones*/ OyenteBotonR ponerRojo = new OyenteBotonR(); botonRojo.addActionListener(ponerRojo); Para que un botón sea reactivo debe registrarse a un objeto oyente. El programador implementa cada clase de un oyente de acuerdo al comportamiento que debe exhibir el botón. Botones
  • 15. public GuiFondoRojoVerde (){ … /*Crear los botones*/ botonRojo = new JButton("Rojo"); botonVerde = new JButton("Verde"); /*Crear y registrar los oyentes para los botones*/ OyenteBotonR ponerRojo = new OyenteBotonR(); botonRojo.addActionListener(ponerRojo); OyenteBotonV ponerVerde = new OyenteBotonV(); botonVerde.addActionListener(ponerVerde); Botones
  • 16. public GuiFondoRojoVerde (){ … /*Insertar los botones en el panel de contenido*/ getContentPane().add(botonRojo); getContentPane().add(botonVerde); } Para que los botones sean visibles deben insertarse en un contenedor, en este caso el panel de contenido del frame Botones
  • 17. /*definir clases para establecer el comportamiento de los botones */ class OyenteBotonR implements ActionListener { public void actionPerformed (ActionEvent event){ getContentPane().setBackground(Color.red); } } Para que un botón reaccione ante una acción del usuario, debe estar registrado a una clase que implemente a la interface ActionListener. Implementar una interface implica definir sus métodos. En este caso el método actionPerformed que recibe como parámetro un objeto de clase ActionEvent. Botones
  • 18. /* definir clases para establecer el comportamiento de los botones */ class OyenteBotonR implements ActionListener { public void actionPerformed(ActionEvent event){ getContentPane().setBackground(Color.red); } } class OyenteBotonV implements ActionListener { public void actionPerformed(ActionEvent event){ getContentPane().setBackground(Color.green); } } } Botones En este ejemplo, cada oyente modifica el color del panel de contenido de acuerdo al botón que el usuario oprime.
  • 19. import java.awt.*; class FondoBotones { public static void main(String args[ ]) { GuiFondoRojoVerde f= new GuiFondoRojoVerde(); f.setVisible(true); } } Botones
  • 20. Botones Desarrolle una aplicación que permita establecer el color de un panel. El color será rojo o verde de acuerdo al botón que se apriete. Por ejemplo, cuando se oprima el botón verde la ventana debe aparecer:
  • 21. //importar paquetes … class GuiPanelRojoVerde extends JFrame { /*Declarar los botones y los paneles */ … public GuiPanelRojoVerde (){ /*Establecer los valores de los atributos */ … /*Crear los botones y los paneles*/ … /*Crear y registrar los oyentes para los botones*/ … /*Insertar los botones en el panel de botones y los paneles en el panel de contenido*/ … } /*definir clases para los oyentes*/ … } Botones
  • 22. //importar paquetes … class GuiPanelRojoVerde extends JFrame { /*Declarar los botones y los paneles*/ private JButton botonRojo, botonVerde; private JPanel panelColor, panelBotones; … } Los atributos de GuiPanelRojoVerde son dos botones y dos paneles. Botones
  • 23. public GuiPanelRojoVerde (){ /*Establecer los valores de los atributos */ … /*Crear los botones y los paneles*/ botonRojo = new JButton("Rojo"); botonVerde = new JButton("Verde"); panelColor= new JPanel(); panelBotones = new JPanel(); … } El orden de estas cuatro instrucciones es irrelevante en ejecución , pero afecta la legibilidad del código. Botones
  • 24. public GuiPanelRojoVerde (){ /*Establecer los valores de los atributos */ … /*Crear y registrar los oyentes para los botones*/ OyenteBotonR ponerRojo = new OyenteBotonR(); botonRojo.addActionListener(ponerRojo); OyenteBotonV ponerVerde = new OyenteBotonV(); botonVerde.addActionListener(ponerVerde); … } El orden de estas cuatro instrucciones es irrelevante en ejecución , pero afecta la legibilidad del código. Botones
  • 25. public GuiPanelRojoVerde (){ … /*Insertar los botones en el panel de botones y los paneles en el panel de contenido*/ panelBotones.add(botonRojo); panelBotones.add(botonVerde); getContentPane().add(panelBotones); getContentPane().add(panelColor); El orden de estas instrucciones influye en la apariencia de la GUI, si se invierten las dos últimas, cambia la distribución de los paneles, dado que por omisión se establece el diagramado FlowLayout. Botones
  • 26. /*definir clases para los oyentes*/ class OyenteBotonR implements ActionListener { public void actionPerformed(ActionEvent event){ panelColor.setBackground(Color.red); } } class OyenteBotonV implements ActionListener { public void actionPerformed(ActionEvent event){ panelColor.setBackground(Color.green); } } } La clase de cada oyente es interna a la clase que especializa a JFrame y por lo tanto tiene acceso a los atributos de instancia de GuiPanelRojoVerde, en particular a panelColor. Botones