Estou iniciando meus estudos sobre interfaces. Comecei com o pacote Swing e já surgiu uma dúvida.
Quando eu quero definir um evento eu devo implementar a Interface ActionListener certo ? Pois é, ai nessa interface tem somente o método ActionPerfomed (acho que é isso). Eu tenho que definir todos os eventos dentro dele ?
Pra ser mais claro minha dúvida é: se eu tiver mais de um botão no frame, por exemplo, como sei em qual eu cliquei ?
O metodo getSource() retorne um Object vc precisa quem disparou um evento foi em JButton ou JMenu , JMenuItem e assim por diante
tluisrs
Cara, valeu mesmo, eu entendi. Só gostaria de saber se esse método não é um pouco demorado demais, pois tem que testar todos os possíveis eventos. Tem algum outro ou é assim que é feito ?
Desde já agradeço
fenrir
Existe outra forma, que é definir o evento para cada botão.
JButtonbutton1=newJButton("botão 1");button1.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){// do something}});JButtonbutton2=newJButton("botão 2");button2.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){// do something}});
Só que isso deixa a classe cheia de código repetido e com as ações sendo tratadas em lugares diferentes. Melhor deixar tudo centralizado.
Quanto à demora…você realmente acha que analisar o evento vai demorar mais tempo do que aquele que o usuário leva para clicar no mouse e soltar o botão?
Se você soubesse o que acontece quando você clica num botão em qualquer programa por aí, ficaria impressionado em quão rápido essas coisas podem acontecer…é só pensar que existe o processamento para saber que o mouse está sobre um botão, que o botão do mouse foi pressionado, quantas vezes foi pressionado, atualizar a GUI (para indicar que o botão na tela foi efetivamente pressionado), disparar diversos eventos para diversos lugares…e por aí vai!!