Boa tarde galera,
Estou com uma duvida.
Como eu faço para dar ação para um botão?
Tipo, se o botão for clicado pelo user o botão executa uma ação.
Valeu !
| Pacifier |
Boa tarde galera,
Estou com uma duvida.
Como eu faço para dar ação para um botão?
Tipo, se o botão for clicado pelo user o botão executa uma ação.
Valeu !
| Pacifier |
E ai blz?
Vai ai um exemplo:
button.addActionListener( new ActionListener() {
public void actionPerformed(ActionEvent e) {
// aqui vai a ação
}
});
Espero ter ajudado
Abraços
acho que assim você entender melhor =)
import javax.swing.JButton;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class botao implements ActionListener {
private JButton botao1;
public botao1()
{
...
botao1 = new JButton("botao");
botao1.addActionListener( this );
...
}
public void actionPerformed(ActionEvent e) {
if( e.getSource() == botao1 ) {
//acao
...
}
}
....
}
O pessoal acima te deu exemplos que se referem ao "click", ao acionamento do botão, ou seja, quando o botão "recebe" um [b]evento[/b] ActionPerformed. Existem várias outras ações (eventos) a que um botão, por exemplo, pode responder. Por exemplo, existe eventos de foco, de mouse, de teclado, e muitos outros.
O legal é vc entender essa dinâmica de [b]tratamento de eventos[/b] em java: Vc tem um componente gráfico, um botão por exemplo. Este botão "dispara" alguns eventos dependendo da forma como o usuário interage com ele (passa o mouse sobre, clica, aperta uma tecla, etc...). Para que seja possível um determinado evento, vc tem que cadastrar um objeto que será o listener desse evento, um objeto que "ouvirá" o evento "disparado" pelo botão. Isto é feito, olhando o código do colega deh, na seguinte linha:
Neste caso, a própria classe que tem a linha acima é a que ouvirá o evento do botão botao1.
Cada tipo de evento está associado com uma interface, a qual deve ser implementada pela classe que “ouvirá” o evento. No exemplo do deh, a classe botao implementa a interface ActionListener, que é a interface associada com o evento de ação (no caso do botão, o clique). Supondo que, por exemplo, quisessemos tratar eventos do botão relacionados ao foco, teriamos que registrar para este botão um evento de foco. Ficaria algo assim:
Neste caso, estamos dizendo o seguinte: “Escuta JVM, quando o botao1 disparar um evento do tipo FocusListener, vai na instância ‘new Handler()’ e se vira lá pra tratar esse evento”. Sendo assim, a classe Handler (inventei agora) deve implementar a interface FocusListener, que tem dois métodos: public void focusGained(FocusEvent e) e public void focusLost(FocusEvent e), o primeiro para quando o componente ganha o foco e o segundo para quando o componente perde o foco.
Mas como fica essa história de “JVM, vai lá no listener e se vira lá…”? Usando esse exemplo do foco, quando o nosso botao1 ganhar o foco, a JVM vai ver se ele tem algum FocusListener registrado. Como no nosso caso tem (uma instância anônima da classe Handler), a JVM procura nesse objeto o método que está associado com o evento ocorrido (focusGained, neste caso) e o executa. É no conteúdo deste método que se dará o tratamento do evento de ganho de foco do botao1.
E o que diabos é aquele parâmetro do tipo FocusEvent??? FocusEvent é uma classe relacionada com eventos de foco, ela traz varias funcionalidades úteis ao tratamento de foco, como por exemplo o método getOppositeComponent(), que retor o Component envolvido na mudança de foco (o Component de onde veio o foco, se for um caso de ganho de foco, ou o Component para onde vai o foco, no caso de perda de foco). Assim também acontece com a interface ActionListener, que tem apenas o método actionPerformed(ActionEvent e), que recebe um ActionEvent, que tem métodos como getWhen(), que retorna um long representando quando o evento ocorreu.
Espero ter ajudado.
PS.: Se por acaso eu escrevi alguma besteira aqui, por favor corrijam e desculpem! hehehehe
Poxa muito grato :-o !!