Você está na página 1de 12

19/08/2015

TrabalhandocomeventosnaGUIdoJava

Buscar

comentrios

favorito (2)

marcar como lido

para impresso

anotar

Trabalhando com eventos na


GUI do Java
Veja neste artigo como funcionam os eventos na GUI
(Graphical User Interface) de aplicaes desenvolvidas
na linguagem Java. Sero apresentados os principais
tipos de eventos e como trat-los.

Gostei(6)

Curtir

13

(0)

Asaplicaesemgeralprecisamdealgunseventosparaofuncionamentocompletodo
programa.NormalmenteasGUIsdoJavasobaseadasemeventos,quesotarefas
realizadasquandoumusuriofazainteraocomalgumcomponenteGUI,
convertendoasaesdousurioemeventos,comoporexemplo:
http://www.devmedia.com.br/trabalhandocomeventosnaguidojava/25898

1/12

19/08/2015

TrabalhandocomeventosnaGUIdoJava

Quandoocorreumaao(ActionEvent)
Cliquedomouse(MouseEvent)
Apertaremumatecla(KeyEvent)
Fecharumajanela(WindowEvent)
Astarefasderespostasrealizadasemumeventosoconhecidascomohandlerde
eventoeoprocessototalderesponderaeventosconhecidocomotratamentode
evento.Paracadatipodeeventoprecisaserimplementadaumainterfacedeescuta.
Asinformaesdeeventosoarmazenadasemumobjetodeumaclassequeestende
AWT.Event.VejaabaixonaFigura1ahierarquiadeeventosreferenteaopacote
java.awt.

Figura1:Classesdeeventodopacotejava.awt
Existemtrselementosparaofuncionamentod1otratamentodeeventoqueso:
OrigemdoEvento:ocomponenteGUIcomqualousuriointerage.
ObjetodoEvento:contmosdadosdoeventoinvocado,sendocomouma
refernciaorigemdoeventoequaisquerinformaesespecficasdoeventoque
http://www.devmedia.com.br/trabalhandocomeventosnaguidojava/25898

2/12

19/08/2015

TrabalhandocomeventosnaGUIdoJava

podemserexigidaspeloouvinteparatestaroevento.
OuvintedoEvento:umobjetoquenotificadopelaorigemdeeventoquando
umeventoocorre.
NaFigura2somostradasasinterfacesouvintesdeeventosdospacotes
javax.swing.event.

Figura2:Interfaceslistenerdeeventos
LembrandoqueasinterfacesprovidasdaclasseListenerpodemterumoumais
mtodosdetratamentodeeventoquedevemserdeclaradosnaclassequeimplementa
ainterface.

Sendo evento ouvinte


Quandoexisteaintenodeumaaodousuriosobrealgumcomponente,
necessrioocomponentesaberquehesseinteresse,sendoassimimplementadoa
interfaceActionListenereusadoomtodoaddActionListener()sendopassadocomo
parmetroapalavrathis,arefernciadoobjetodaclassequeimplementaa
interfaceActionListener,nestecasoelamesma.Apsissoprecisosaberuma
http://www.devmedia.com.br/trabalhandocomeventosnaguidojava/25898

3/12

19/08/2015

TrabalhandocomeventosnaGUIdoJava

maneiradechamarocomponentequandoalgumeventoocorrer,sendoqueo
componenteirchamaromtododainterfacedeescuta,ActionListener.
Parafazermosumtratadordeeventosprecisamosdetrsaesbsicas:
1. EspecificarumaclassequeimplementeumainterfacedeActionListener:
publicclassCapturaEventoimplementsActionListener{
2. Executarumcdigoqueregistreumainstnciadestaclassescomoumlistener
deumoumaiscomponentes:
botao.addActionListener(this)
3. DefiniromtododemanipulaodeeventosinterfaceActionListener:
publicvoidactionPerformed(ActionEventevento){
Listagem1:Capturaoeventodeumboto

importjava.awt.Font;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjavax.swing.JButton;
importjavax.swing.JFrame;
publicclassCapturaEventoBotaoimplementsActionListener{

privateJButtonbotao;

publicvoidjanela(){

JFrameframe=newJFrame();

botao=newJButton();

//REGISTRAOEVENTO

botao.addActionListener(this);

frame.getContentPane().add(botao);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setSize(300,100);

frame.setVisible(true);

http://www.devmedia.com.br/trabalhandocomeventosnaguidojava/25898

4/12

19/08/2015

TrabalhandocomeventosnaGUIdoJava

@Override

publicvoidactionPerformed(ActionEventevento){

//ALTERAAFONTE

botao.setFont(newFont("SansSerif",Font.BOLD,20));

botao.setText("Botofoiclicado!");

publicstaticvoidmain(String[]args){

CapturaEventoBotaocaptura=newCapturaEventoBotao();

captura.janela();

Handler de Evento
Quandoumeventoacontece,realizadoodespacho(dispatching)paraosouvintes
apropriados.EssedespachooprocessoemqueocomponenteGUIchamaum
mtododetratamentodeeventoemcadaumdeseusouvintes,sendoregistradospara
otipodeeventoocorrido.
AocorrnciadeumeventofazcomqueocomponenterecebaumIDnicodeevento.
EsseIDespecificaotipodeevento.EntoocomponentepegaesseIDparadecidir
qualtipodeouvinteirsertilparaoeventoquedeverserdespachado,decidindo
qualomtodoquevaichamarparacadaobjetolistener.
Oeventodespachadoportodasasdecisesquesotratadasparaousurioatravs
doscomponentesGUI.Sendonecessrioserfeito,poisprecisaserregistradoum
handlerdeeventoparaotipoparticulardeeventoqueoaplicativoexige.O
componentevaiassegurarqueomtodoapropriadodohandlerdeeventochamado
quandooeventoocorrer.AbaixoilustramosalgunsexemplosdecomponentesGUIe
manipulaesdealgunseventos.
Listagem2:Criaodeboteseaplicaodeeventos
http://www.devmedia.com.br/trabalhandocomeventosnaguidojava/25898

5/12

19/08/2015

TrabalhandocomeventosnaGUIdoJava

importjava.awt.FlowLayout;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JOptionPane;
publicclassButtonFrame2extendsJFrame{

privateJButtonbotaoPrata;

privateJButtonbotaoOuro;

//BUTTONFRAMEADICIONAJBUTTONSAOJFRAME

publicButtonFrame2()

super("TestandoBotes");

setLayout(newFlowLayout());//CONFIGURAOLAYOUTDEFRAME

botaoPrata=newJButton("Prata");//BOTOCOMTEXTO

add(botaoPrata);//ADICIONAbotaoPrataAOJFRAME

botaoOuro=newJButton("Ouro");

add(botaoOuro);//ADICIONAbotaoOuroAOJFRAME

//CRIANOVOBUTTONHANDLERPARATRATAMENTODEEVENTODEBOTO

ButtonHandlerhandler=newButtonHandler();

botaoOuro.addActionListener(handler);

botaoPrata.addActionListener(handler);

//CLASSEINTERNAPARATRATAMENTODOBOTO

publicclassButtonHandlerimplementsActionListener

//TRATAEVENTODOBOTO

publicvoidactionPerformed(ActionEventevent)

JOptionPane.showMessageDialog(ButtonFrame2.this,String.format("Voc

http://www.devmedia.com.br/trabalhandocomeventosnaguidojava/25898

6/12

19/08/2015

TrabalhandocomeventosnaGUIdoJava

ApenascomentandoquenocdigodaListagem2foicriadaumaclasseinterna
chamadaButtonHandler.Umaclsseinternacriadaparacapturaroseventosdedois
oumaiscomponentesdiferentes.Aclasseinternapodeusartodososmtodose
variveisdaclasseexterna.
Listagem3:TestaaclasseButtonFrame2

importjavax.swing.JFrame;
publicclassTestaButton{

publicstaticvoidmain(String[]args){

ButtonFrame2buttonFrame=newButtonFrame2();

buttonFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

buttonFrame.setSize(275,210);

buttonFrame.setVisible(true);

Eventos nos TextField


Listagem4:Eventosnoscamposdetextos

importjava.awt.FlowLayout;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjavax.swing.JFrame;
importjavax.swing.JOptionPane;
importjavax.swing.JPasswordField;
importjavax.swing.JTextField;
publicclassTextFieldFrameextendsJFrame{

privateJTextFieldtextField1;

privateJTextFieldtextField2;

privateJTextFieldtextField3;

http://www.devmedia.com.br/trabalhandocomeventosnaguidojava/25898

7/12

19/08/2015

TrabalhandocomeventosnaGUIdoJava

privateJPasswordFieldpasswordField;

//CONSTRUTORTEXTFIELDFRAMEADICIONAJTEXTDFIELDSAJFRAME

publicTextFieldFrame()

super("TestandoJTextFieldeJPasswordField");

setLayout(newFlowLayout());

//CONSTRITEXTFIELDCOM10COLUNAS

textField1=newJTextField(10);

add(textField1);//ADICIONATEXTFIELD2AOJFRAME

textField2=newJTextField("Entrecomotextoaqui");

add(textField2);

//CONSTRITEXTFIELDCOMTEXTOPADROE21COLUNAS

textField3=newJTextField("Camponoeditvel",21);

textField3.setEditable(false);//DESATIVAEDIO

add(textField3);

//CONSTRIPASSWORDFIELDCOMTEXTOPADRO

passwordField=newJPasswordField("TextoEscondido");

add(passwordField);//ADICIONAPASSWORDFIELDAOJFRAME

//HANDLERSDEEVENTOREGISTRADORES

TextFieldHandlerhandler=newTextFieldHandler();

textField1.addActionListener(handler);

textField2.addActionListener(handler);

textField3.addActionListener(handler);

passwordField.addActionListener(handler);

//CLASSEINTERNAPRIVATEPARATRATAMENTODEEVENTO

privateclassTextFieldHandlerimplementsActionListener

//PROCESSAEVENTOSDECAMPODETEXTO

publicvoidactionPerformed(ActionEventevent){

//USURIOPRESSIONOUENTERNOJTEXTFIELDTEXTFIELD1

if(event.getSource()==textField1)

Stringstring="";

string=String.format("textField1:%s",event.getActionComm

//USURIOPRESSIONOUENTERNOJTEXTFIELDTEXTFIELD2

http://www.devmedia.com.br/trabalhandocomeventosnaguidojava/25898

8/12

19/08/2015

TrabalhandocomeventosnaGUIdoJava

elseif(event.getSource()==textField2)

//USURIOPRESSIONOUENTERNOJTEXTFIELDTEXTFIELD3

elseif(event.getSource()==textField3)

//USURIOPRESSIONOUENTERNOJTEXTFIELDPASSWORDFIELD

elseif(event.getSource()==passwordField)

//EXIBEOCONTEDODEJTEXTFIELD

JOptionPane.showMessageDialog(null,string);

string=String.format("textField2:%s",event.getActionComm

string=String.format("textField3:%s",event.getActionComm

string=String.format("passowordField:%s",event.getAction

Listagem5:ClassetestadoraTextFieldFrame

importjavax.swing.JFrame;
publicclassTestaTextField{

publicstaticvoidmain(String[]args){

TextFieldFrametextFieldFrame=newTextFieldFrame();

textFieldFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

textFieldFrame.setSize(350,200);

textFieldFrame.setVisible(true);

Concluso
Paraconcluiresseartigo,abaixoapresentadoumresumodealgumasaespara
servircomobasedeconsulta.
http://www.devmedia.com.br/trabalhandocomeventosnaguidojava/25898

9/12

19/08/2015

TrabalhandocomeventosnaGUIdoJava

SemprequandoforcriarumcomponentecomececomumaJanela(JFrame)
Jframeframe=newJframe()
ParaadicionaroscomponentesgrficosdentrodeumJframe
frame.getContentPane().add(nomeComponenteInstanciado)
Paraouvirumevento,sempreregistrarointeresseemumaorigemdeevento.
PararegistrareouvirActionEventsdeumcomponente
nomeDoComponente.addActionListener(this)
Implementeainterfacedeescutaeinsiratodososmtodosdemanipulaode
eventosqueessainterfacetem.
publicvoidactionPerformed(ActionEventevento){
//DEFINEOSESTADOSDOSCOMPONENTES

}
Esperoquetenhamgostadoeataprxima!

ThiagoVinciusVaralloPalmeira
Umentusiastadaslinguagensdeprogramao.Frum:varallos.com.br/forunsSite:varallos.com.br
YouTube:youtube.com/varallos1'Deveriaexistirumapitadadediletantismonacrtica.Poisodiletante
umentusias[...]
Publicadoem2012

Oquevocachoudestepost?
http://www.devmedia.com.br/trabalhandocomeventosnaguidojava/25898

10/12

19/08/2015

TrabalhandocomeventosnaGUIdoJava

Gostei(6)

(0)

+ MaiscontedosobreJava

Nohcomentrios

Postardvida/Comentrio

Meuscomentarios

Publicidade

Mais posts
Artigo

Como funciona o JSF View State


21

Introduo a NFC-e
Artigo
http://www.devmedia.com.br/trabalhandocomeventosnaguidojava/25898

11/12

19/08/2015

TrabalhandocomeventosnaGUIdoJava

Trabalhando com o Pattern Observer na Plataforma Java EE


Artigo

Introduo ao PrimeFaces
Pocket Video

Upload de arquivos: JSF vs RichFaces


Video aula

Finalizando CRUD com Phone Curso de Spring-Data JPA


Aula 15
Listar mais contedo

Anuncie | Loja | Publique | Assine | Faleconosco

DevMedia
CurtirPgina

70milcurtidas

Sejaoprimeirodeseusamigosacurtirisso.

HospedagemwebporPorta80WebHosting

http://www.devmedia.com.br/trabalhandocomeventosnaguidojava/25898

12/12