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.
Não faça isso. Você só vai dificultar a sua vida. Cria um listener separado para cada evento.
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... } }
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).
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