E.getSource() no actionPerformed [RESOLVIDO]

Boa noite pessoal,

To com uma duvida boba aqui, o que acontece eh o seguinte: tenho uma classe A que tem a parte GUI (Swing) e a classe B que implementa ActionListener.
Tem 4 JButtons na classe A, e add ActionListeners a todos eles (a classe B é o listener).

Sóq eu quando uso o e.getSource() do actionPerformed na classe B, aparece a descrição toda do botão em vez de só o nome dele, como mostro abaixo:

“javax.swing.JButton[,17,151,92x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource@7ffe01,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Pesquisar,defaultCapable=true]”

Como faço pra pegar apenas o nome do botão que gerou o evento?

Mto obrigado.

Não é upar, até pq o tópico continuav la em cima, mas é que li meu texto e vi que tava pouco explicativo.

Tentando novamente, eu queria o seguinte:

public void actionPerformed(ActionEvent e) {

if (e.getSource() == btn1) {
  //código
}
else if (e.getSource() == btn2){
  //código
}

}

O que acontece é que não funciona e quando dou um

  System.out.println(e.getSource().toString());

Me aparece isso: “javax.swing.JButton[,17,151,92x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource@7ffe01,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Pesquisar,defaultCapable=true]”

Em vez de apenas o nome do botão.

Lembrando que os Botões estão na classe A, e o código com o ctionPerformed escrito acima está na classe B.

Mto obrigado desde já.

Use getText() no lugar de toString().

Olá, ViniGodoy

Primeiramente mto obrigado por ler e postar.

Olha, eu fiz isso, mas retorna apenas o texto do botão, eu preciso do nome mesmo.

Novamente mto obrigado, tomara que possa continuar me ajudando.

abraço.

Você quer dizer o nome da variável do botão? Isso você não vai conseguir nunca.

O que você pode fazer é ao criar o seu botão fazer:

E depois usar o getName() nesse método.

ViniGodoy

Mto obrigado por estar ajudando, dando dicas.

Então, como tá na outra classe, nem msm pela e .getSource() posso conseguir isso?

Abração.

pensei em usar assim:

if (e.getSource() .equals("btn1"))
{

}

nem msm assim?

asdasdasdasdasd

tenta assim:

Na outra classe vc cria métodos que retorna um JButton assim:

public JButton getJButton1() {
		if (btn1 == null) {
			btn1 = new JButton();
			btn1.setText("btn1");

          }

return btn1;

}

public JButton getJButton2() {
		if (btn2 == null) {
			btn2 = new JButton();
			btn2.setText("btn2");

          }

return btn2;

}

E no seu actionPerformed use assim:

public void actionPerformed(ActionEvent e) {  
if (e.getSource() ==  getJButton1()) {
			System.out.println( getJButton1().getText());
		}

	
else if (e.getSource() ==  getJButton2()){  
 System.out.println( getJButton2().getText());
}  
  
}  

Boa sorte.

Fexx, é que to tentando deixar o menos acoplado o possível.

Retorna null. To revirando atras de algo e nada.

Mas mto obrigado por estarem ajudando. Se tiverem mais alguma dica. Vlw.

Mas você deu o setName? Se não der, não tem como pegar nada no getName.

Olá ViniGodoy,

Então, esse é o problema, se eu der setName() não terei como saber qual dos 4 botões que geruo o evento. Será que não tem outra forma?
Mto obrigado por disponibilizar seu tempo pra me ajudar aqui, ainda to dando uma pesquisada pra ver se consigo resolver o problema.

Abração.

Ué, por que não? Se você der um nome diferente para cada botão, a forma que indiquei vai retornar o nome do botão que disparou o evento.

ViniGodoy,

Só agora entendi, era pra dar setName na classe onde tá o JButton! Fia aqui e funcionou certinho!
Nossa, desculpa a burrice! hehe

Mto obrigado cara, o tópico ta resolvido, graças a você e os demais que colaboraram.

Mto obrigado msm, e um grande abraço a todos!

Tópico movido para o fórum de interface gráfica.