Evento - BOTÃO [RESOLVIDO]

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

[quote=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();
	                }

[/quote]

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.

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…!

Resolvi o problema da seguinte forma:

[code] public void actionPerformed(ActionEvent e) {
String s = e.getActionCommand();
System.out.println(s);

	if(s == "Contatos"){
		new ContatosVisao();
	}
	
	if(s == "Compromissos"){
		new CompromissosVisao();
	}
}[/code]

[code]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();
                }

[/code]

Robsonramosabrao, mto obrigada!!

A forma que vc fez é mto mais elegante!

Obrigada…!

Dina