Está en la página 1de 7

14/8/2015

SwingJButton

SwingJButton
El tercer control visual de uso muy comn es el que provee la clase JButton. Este
controlvisualmuestraunbotn.
ElprocesoparaaadirbotonesauncontrolJFrameessimilaraaadircontrolesde
tipoJLabel.
Ahoraveremoslacapturadeeventosconloscontrolesvisuales.Unodeloseventos
mscomunesescuandohacemosclicsobreunbotn.
Java implementa el concepto de interfaces para poder llamar a mtodos de una
claseexistenteaunaclasedesarrolladapornosotros.

Problema1:
Confeccionar una ventana que muestre un botn. Cuando se presione finalizar la
ejecucindelprogramaJava.

Programa:

importjavax.swing.*
importjava.awt.event.*
http://www.javaya.com.ar/detalleconcepto.php?codigo=106&inicio=20

1/7

14/8/2015

SwingJButton

publicclassFormularioextendsJFrameimplementsActionListe
JButtonboton1
publicFormulario(){
setLayout(null)
boton1=newJButton("Finalizar")
boton1.setBounds(300,250,100,30)
add(boton1)
boton1.addActionListener(this)
}

publicvoidactionPerformed(ActionEvente){
if(e.getSource()==boton1){
System.exit(0)
}
}

publicstaticvoidmain(String[]ar){
Formularioformulario1=newFormulario()
formulario1.setBounds(0,0,450,350)
formulario1.setVisible(true)
}
}
LamecnicaparaatraparelclicdelobjetodelaclaseJButtonsehacemediantela
implementacin de una interface. Una interface es un protocolo que permite la
comunicacin entre dos clases. Una interface contiene uno o ms cabecera de
mtodos,peronosuimplementacin.PorejemplolainterfaceActionListenertienela
siguienteestructura:
interfaceActionListener{
publicvoidactionPerformed(ActionEvente){
}

LuegolasclasesqueimplementenlainterfaceActionListenerdebernespecificarel
algortmodelmtodoactionPerformed.
Mediante el concepto de interfaces podemos hacer que desde la clase JButton se
puedellamaraunmtodoqueimplementamosennuestraclase.
Paraindicarqueunaclaseimplementarunainterfacelohacemosenladeclaracin
delaclaseconlasintaxis:
http://www.javaya.com.ar/detalleconcepto.php?codigo=106&inicio=20

2/7

14/8/2015

SwingJButton

publicclassFormularioextendsJFrameimplementsActionListener{

Con esto estamos diciendo que nuestra clase implementa la interface


ActionListener,luegoestamosobligadosacodificarelmtodoactionPerformed.
DefinimosunobjetodelaclaseJButton:
JButtonboton1;

En el constructor creamos el objeto de la clase JButton y mediante la llamada del


mtodo addActionListener le pasamos la referencia del objeto de la clase JButton
utilizando la palabra clave this (this almacena la direccin de memoria donde se
almacena el objeto de la clase JFrame, luego mediante dicha direccin podemos
llamaralmtodoactionPerformed):
publicFormulario(){
setLayout(null);
boton1=newJButton("Finalizar");
boton1.setBounds(300,250,100,30);
add(boton1);
boton1.addActionListener(this);
}

El mtodo actionPerformed (este mtodo de la interface ActionListener debe


implementarse obligatoriamente, en caso de no codificarlo o equivocarnos en su
nombre aparecer un mensaje de error en tiempo de compilacin de nuestro
programa.
ElmtodoactionPerformedseejecutarcadavezquehagamosclicsobreelobjeto
delaclaseJButton.
La interface ActionListener y el objeto de la clase ActionEvent que llega como
parmetroestndefinidosenelpaquete:
importjava.awt.event.*;

EsdecirquecadavezquesepresionaelbotndesdelaclaseJButtonsellamaal
mtodoactionPerformedyrecibecomoparmetrounobjetodelaclaseActionEvent.
EnelmtodoactionPerformedmedianteelaccesoalmtodogetSource()delobjeto
quellegacomoparmetropodemosanalizarquebotnsepresion:

http://www.javaya.com.ar/detalleconcepto.php?codigo=106&inicio=20

3/7

14/8/2015

SwingJButton

publicvoidactionPerformed(ActionEvente){
if(e.getSource()==boton1){
System.exit(0);
}
}

Sisepresionnelboton1luegoelifseverificaverdaderoyporlotantollamandoal
mtodoexitdelaclaseSystemsefinalizalaejecucindelprograma.
Lamainnovaraennadaconrespectoaproblemasanteriores.

Problema2:
Confeccionar una ventana que contenga tres objetos de la clase JButton con las
etiquetas "1", "2" y "3". Al presionarse cambiar el ttulo del JFrame indicando cul
botnsepresion.

Programa:

importjavax.swing.*
importjava.awt.event.*
publicclassFormularioextendsJFrameimplementsActionListe
privateJButtonboton1,boton2,boton3
publicFormulario(){
setLayout(null)
boton1=newJButton("1")
boton1.setBounds(10,100,90,30)
add(boton1)
boton1.addActionListener(this)
boton2=newJButton("2")
boton2.setBounds(110,100,90,30)
add(boton2)
http://www.javaya.com.ar/detalleconcepto.php?codigo=106&inicio=20

4/7

14/8/2015

SwingJButton

boton2.addActionListener(this)
boton3=newJButton("3")
boton3.setBounds(210,100,90,30)
add(boton3)
boton3.addActionListener(this)
}

publicvoidactionPerformed(ActionEvente){
if(e.getSource()==boton1){
setTitle("boton1")
}
if(e.getSource()==boton2){
setTitle("boton2")
}
if(e.getSource()==boton3){
setTitle("boton3")
}
}

publicstaticvoidmain(String[]ar){
Formularioformulario1=newFormulario()
formulario1.setBounds(0,0,350,200)
formulario1.setVisible(true)
}
}
Debemosdeclarar3objetosdelaclaseJButton:
privateJButtonboton1,boton2,boton3;

EnelconstructorcreamoslostresobjetosdelaclaseJButtonylosubicamosdentro
delcontrolJFrame(tambinllamamosalmtodoaddActionListenerparaenviarlela
direccindelobjetodelaclaseFormulario):
publicFormulario(){
setLayout(null);
boton1=newJButton("1");
boton1.setBounds(10,100,90,30);
add(boton1);
boton1.addActionListener(this);
boton2=newJButton("2");
boton2.setBounds(110,100,90,30);
http://www.javaya.com.ar/detalleconcepto.php?codigo=106&inicio=20

5/7

14/8/2015

SwingJButton

add(boton2);
boton2.addActionListener(this);
boton3=newJButton("3");
boton3.setBounds(210,100,90,30);
add(boton3);
boton3.addActionListener(this);
}

Cuando se presiona alguno de los tres botones se ejecuta el mtodo


actionPerformedymediantetresifverificamoscualdelosbotonessepresion:
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==boton1){
setTitle("boton1");
}
if(e.getSource()==boton2){
setTitle("boton2");
}
if(e.getSource()==boton3){
setTitle("boton3");
}
}

SegnelbotnpresionadollamamosalmtodosetTitlequesetratadeunmtodo
heredadodelaclaseJFrameyquetieneporobjetivomostrarunStringenelttulo
delaventana.

Problemaspropuestos
1. DisponerdosobjetosdelaclaseJButtonconlasetiquetas:"varn"y"mujer",al
presionarse mostrar en la barra de ttulos del JFrame la etiqueta del botn
presionado.
importjavax.swing.*
importjava.awt.event.*
publicclassFormularioextendsJFrameimplementsActionListener{
privateJButtonboton1,boton2
publicFormulario(){
setLayout(null)
boton1=newJButton("Varn")
boton1.setBounds(10,10,100,30)
boton1.addActionListener(this)
add(boton1)
boton2=newJButton("Mujer")
boton2.setBounds(10,70,100,30)
boton2.addActionListener(this)
add(boton2)
http://www.javaya.com.ar/detalleconcepto.php?codigo=106&inicio=20

6/7

14/8/2015

SwingJButton

publicvoidactionPerformed(ActionEvente){
if(e.getSource()==boton1){
setTitle("Varn")
}
if(e.getSource()==boton2){
setTitle("Mujer")
}
}

publicstaticvoidmain(String[]ar){
Formularioformulario1=newFormulario()
formulario1.setBounds(0,0,130,140)
formulario1.setVisible(true)
}
}

Retornar

http://www.javaya.com.ar/detalleconcepto.php?codigo=106&inicio=20

7/7

También podría gustarte