Olá,
o ActionListener está sempre relacionado ao Swing? Programação Desktop ou não?
alguém poderia me passar um exemplo mais simplezinho?
abraço,
AS
Olá,
o ActionListener está sempre relacionado ao Swing? Programação Desktop ou não?
alguém poderia me passar um exemplo mais simplezinho?
abraço,
AS
Alguma sugestão?
Um “ActionListener” é um evento que pode ser disparado quando uma ação é executada por um usuário. Um exemplo disso pode ser um click em um botão ou a alteração de o valor de um campo.
O conceito seria este, porém cada camada de apresentação possui uma implementação específica.
No JSF temos “javax.faces.event.ValueChangeEvent” que deve ser implementado para ser executado quando o valor de um campo é alterado, ou “javax.faces.event.ActionEvent” que pode ser implementado para ser executado quando o botão ou commandLink recebe um evento de “click” pelo usuário.
No swing você implementa “java.awt.event.ActionListener”.
No JSF e no Swing existem métodos disponibilizados pelos componetes onde você seta estes listeners, podendo assim verificar através destas implementações qual botão foi “clicado”, possibilitando que ações sejam tomadas com base nesta informação.
Espero ter sido claro.
Um abraço.
muitíssimo obrigado a todos cada post consolidou meu conhecimento…
abraço
AS
puxa lendo o post que o Vini me mandou tive a seguinte dúvida:
como usar o actionPerformed ? mas acho q entendí, “ele notifica sobre o evento a quem está escutando”…
será q alguém pode me dar um exemplinho em código pra eu sair um pouco da teoria?
abraço e agredeço demais a atenção de todos…
Segue um exemplo bem básico que alguns estudos que fiz…
//classe listener
public abstract class ConsultaRelClientesCidadeRepresentante implements ActionListener{
private JInternalFrame visao;
public ConsultaRelClientesCidadeRepresentante (JInternalFrame visao){
this.visao = visao;
}
public void actionPerformed(java.awt.event.ActionEvent e) {
if(e.getActionCommand().equals("fechar")) {
//fecha a janela
visao.dispose();
}
if(e.getActionCommand().equals("visualizar")) {
//visualiza o relatório
try{
visualizarRelatorio();
}catch (FileNotFoundException erro) {
JOptionPane.showMessageDialog(null, "O Relatório localizado em " + getLayout() + " não existe!!!",
"Arquivo não localizado", JOptionPane.WARNING_MESSAGE);
}catch (Exception erro) {
JOptionPane.showMessageDialog(null, erro.getCause() + "\n" +erro.getMessage(),
"Erro ao processar o relatório",
JOptionPane.WARNING_MESSAGE);
}
}
}
//outros métodos foram omitidos
}
//classe qie implementa um JInternalFrame
public class WinRelClientesCidadeRepresentante extends JInternalFrame {
//outros componentes apresentados no JInternalFrame foram omitidos
private JButton buttonVisualizar = null;
private ConsultaRelClientesCidadeRepresentante controle = new ConsultaRelClientesCidadeRepresentante(this);
private JButton getButtonVisualizar() {
if (buttonVisualizar == null) {
buttonVisualizar = new JButton();
buttonVisualizar.setText("Visualizar");
buttonVisualizar.setIcon(new ImageIcon(getClass().getResource("/icones/print_edit.gif")));
buttonVisualizar.setMnemonic(java.awt.event.KeyEvent.VK_V);
buttonVisualizar.addActionListener(controle);
buttonVisualizar.setActionCommand("visualizar");
}
return buttonVisualizar;
}
//continua a classe do JInternalFrame (Omitido a continuidade do código)
......
ai vai um exemplo bem simples de actionlistner com swing
import java.awt.event.*;
import javax.swing.*;
public class loop implements ActionListener {
private JFrame frame;
private JPanel painel;
private JButton botao;
private String novoTitulo;
public void go(){
frame = new JFrame();
painel = new JPanel();
botao = new JButton("clike aki!");
//adiciona uma ação ao botao
botao.addActionListener(this);
painel.add(botao);
frame.add(painel);
frame.setVisible(true);
frame.setSize(150,150);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
// metodo q executa a ação qnd invocado
public void actionPerformed(ActionEvent ev){
novoTitulo = "voce clikou aki!!";
botao.setText(""+novoTitulo);
}
public static void main (String args[]){
loop l = new loop();
l.go();
}
}