Vários menus com um único listener

5 respostas Resolvido
java
V

Olá, como posso tratar os eventos de vários menus com uma única classe interna que implementa ActionListener, eu tinha tentado utilizar e.getSource() para identificar o menu clicado, mas não tive sucesso. Obrigado.

5 Respostas

rmendes08

Não faça isso. Você só vai dificultar a sua vida. Cria um listener separado para cada evento.

Mathob

Concordando com o @rmendes08, você realmente necessita disso?

V

Olá, estou fazendo isso, porém tenho eventos que fazem pouca coisa (como alterar o nome de um JButton). Queria economizar código, para não ter que ficar digitando:

class AlterarNome implements ActionListener { public void actionPerformed(ActionEvent e) { // código... } }

Para todo evento que eu criar. Por isso, queria fazer uma única classe que identificasse o menu clicado e fazer tal coisa:

class FazAlgo implements ActionListener { public void actionPerformed(ActionEvent e) { // identifica o botão e faz o que é específico dele... } }

rmendes08
Solucao aceita

A IDE já economiza bastante digitação para você. Melhor ter métodos pequenos de forma que cada um faça uma única tarefa do que ter um método monstro que faça tudo (que aliás, é o pior pesadelo para quem faz manutenção de código).

Mathob

Se você não usar muito essa classe “FazAlgo” vc pode simplesmente colocar em uma classe anonima

algumObjeto.setEvent((ActionEvent e) -> { // identifica o botão e faz o que é específico dele... }

ou ainda, p ficar menor, caso seja apenas uma linha de instrução, vc pode usar

algumObjeto.setEvent((e) -> // identifica o botão e faz o que é específico dele...

isso no java 8

Criado 15 de janeiro de 2016
Ultima resposta 15 de jan. de 2016
Respostas 5
Participantes 3