Evento - BOTÃO [RESOLVIDO]

5 respostas
D

Boa tarde pessoal,

Estou com um problema ao tratar de evento de botão.

Tenho duas classes em pacotes diferentes…
Uma que tem os 2 botões que eu quero tratar, e a outra classe que trata o evento…

Na classe que tem os botões eu fiz o seguinte:

JButton bCont = new JButton("Contatos");
		JButton bComp = new JButton("Compromissos");
		bCont.addActionListener(new AberturaControle(this));
		bComp.addActionListener(new AberturaControle(this));

Na classe que trata o evento, implementei o ActionListener e fiz o seguinte:

public void actionPerformed(ActionEvent e) {
		Object ob = e.getSource();
		
		if(ob == bComp){
			new CompromissosVisao();
		}
		if(ob == bCont){
			new ContatosVisao();
	                }

Importei as classes e tudo… Mas não deu certo…

Ao tentar rodar o programa, se eu clico em um dos botões aparece o seguinte erro:
[b][color=red] Exception in thread “AWT-EventQueue-0” java.lang.Error: Unresolved compilation problems:
bComp cannot be resolved
bCont cannot be resolved

at controle.AberturaControle.actionPerformed(AberturaControle.java:19)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

[/b][/color]

Alguém pode me ajudar?

Agradeço desde já,
Dina

5 Respostas

rafabene

dina:
Boa tarde pessoal,

Estou com um problema ao tratar de evento de botão.

Tenho duas classes em pacotes diferentes…
Uma que tem os 2 botões que eu quero tratar, e a outra classe que trata o evento…

Na classe que tem os botões eu fiz o seguinte:

JButton bCont = new JButton("Contatos");
		JButton bComp = new JButton("Compromissos");
		bCont.addActionListener(new AberturaControle(this));
		bComp.addActionListener(new AberturaControle(this));

Na classe que trata o evento, implementei o ActionListener e fiz o seguinte:

public void actionPerformed(ActionEvent e) {
		Object ob = e.getSource();
		
		if(ob == bComp){
			new CompromissosVisao();
		}
		if(ob == bCont){
			new ContatosVisao();
	                }

Olá Dina,

Isto acontece justamente pq as variáveis bComp e bCont são declaradas em uma classe e você está tentando fazer referência em outra Classe ( AberturaControle no caso).

Eu vi que você passou a referência da Classe da Gui no construtor da AberturaControle. tente pegar a referência do botão pressionado a partir da referência que foi passada no construtor da AberturaControle.

D

Hum… me fala uma coisa, pelo que eu lembro, há como tratar um evento em outra classe a partir do método getSource, certo??

Como eu posso fazer isso nesse caso??

Eles estão em bibliotecas separadas, mas eu os importei…

Obrigada…!

D

Resolvi o problema da seguinte forma:

public void actionPerformed(ActionEvent e) {
    	String s = e.getActionCommand();
    	System.out.println(s);
    	
    	if(s == "Contatos"){
    		new ContatosVisao();
    	}
    	
    	if(s == "Compromissos"){
    		new CompromissosVisao();
    	}
    }
Robsonramosabrao
Tente fazer o seguinte:


JButton bCont = new JButton("Contatos");   
JButton bComp = new JButton("Compromissos");   
bCont.addActionListener(new AberturaControle(this,1));// 1 Indentifica quem gerou o evento   
bComp.addActionListener(new AberturaControle(this,2));//2 Indentifica quem gerou o evento  
		JButton bCont = new JButton("Contatos");
		JButton bComp = new JButton("Compromissos");
		bCont.addActionListener(new AberturaControle(this));
		bComp.addActionListener(new AberturaControle(this));
 


               public void actionPerformed(ActionEvent e, int gerador) {   

if( gerador == 1){   
    new CompromissosVisao();   
}   
if(gerador == 2){   
    new ContatosVisao();   
               }  
	                public void actionPerformed(ActionEvent e) {
		Object ob = e.getSource();
		
		if(ob == bComp){
			new CompromissosVisao();
		}
		if(ob == bCont){
			new ContatosVisao();
	                }
D

Robsonramosabrao, mto obrigada!!

A forma que vc fez é mto mais elegante!

Obrigada…!

Dina

Criado 18 de novembro de 2007
Ultima resposta 19 de nov. de 2007
Respostas 5
Participantes 3