Ir ao conteúdo
  • Cadastre-se
Alasca

Tratamento de Eventos - Java

Recommended Posts

Olá!

 

Estou com dificuldades no tratamento de eventos em Java.
Gostaria de adicionar os logs de eventos ao TextArea, com a data e hora em que ocorreram.
Comecei a implementar o evento de click do botão. Ele funciona, mas não sei como faço para jogar o log na área de texto.
Tem uma parte do código que deixei comentada, que seria utilizada para adicionar o log a todos os eventos, mas não está funcionando como esperado (não implementei todos os eventos ainda).

 

Os eventos que quero monitorar são: 
1. Botao: MouseListener - Implementar todos os métodos desta interface.
2. Frame: MouseListener - Implementar todos os métodos desta interface.
3. Campo 1 e 2:FocusListener - Implementar todos os métodos desta interface.
4. Campo 1 e 2:KeyListener - Implementar o método keyTyped informando no log a tecla pressionada.

 

Seria para ser mais ou menos assim:

TEventos.png.31d7e9c80d7f16629975d0aa52f67b6b.png

 

Segue o código que estou utilizando, se alguém puder ajudar, agradeço muito!


 

package meventos;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class MEventos extends JFrame {
    private JLabel jCampo1, jCampo2, jLog;
    private JTextField jtfCampo1, jtfCampo2;
    private TextArea taLog;
    private JButton jbBotao;
    public MEventos() {
        IniciarComponentes();
    }
    public void IniciarComponentes() {
        jbBotao = new JButton("Botão");
        jbBotao.setBounds(320, 270, 80, 30);
        jbBotao.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("Botao Foi Clicado");
            }
        });
        this.setSize(450, 350);
        this.setLayout(null);
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Tratamento de Eventos");
        jCampo1 = new JLabel("Campo 1");
        jCampo1.setBounds(10, 10, 50, 20);
        jtfCampo1 = new JTextField();
        jtfCampo1.setBounds(10, 30, 200, 20);
        jCampo2 = new JLabel("Campo 2");
        jCampo2.setBounds(225, 10, 50, 20);
        jtfCampo2 = new JTextField();
        jtfCampo2.setBounds(225, 30, 200, 20);
        jLog = new JLabel("Log de Eventos");
        jLog.setBounds(10, 80, 90, 20);
        taLog = new TextArea("", 10, 60, TextArea.SCROLLBARS_VERTICAL_ONLY);
        taLog.setBounds(10, 100, 400, 150);
        taLog.setEditable(true);
        this.add(jCampo1);
        this.add(jtfCampo1);
        this.add(jCampo2);
        this.add(jtfCampo2);
        this.add(jLog);
        this.add(taLog);
        this.add(jbBotao);
    }
  
    /**
 
 
 // Não funciona corretamente
    //Método que pode ser utilizado para adicionar ao log todos eventos
public void addEventos(String evento)
{
DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); //pega hora
Date date = new Date();
taLog.setText( dateFormat.format(date)+" - "+evento+"\n"+ taLog.getText());
taLog.setCaretPosition(0); //posiciona na primeira linha
}
public void keyTyped(KeyEvent e)
{
addEventos("Tecla \""+e.getKeyChar()+"\" digitada no Campo 1");//pega a tecla pressionada no campo 1
}
 *
 * */

    public static void main(String[] args) {
        JFrame x = new MEventos();
        x.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        x.setVisible(true);
    }
}


 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia. O problema esta apenas na ordem que você declarou. Seu método funciona perfeitamente.

Citação

    public void IniciarComponentes() {
        jbBotao = new JButton("Botão");
        jbBotao.setBounds(320, 270, 80, 30);
        this.setSize(450, 350);
        this.setLayout(null);
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Tratamento de Eventos");
        jCampo1 = new JLabel("Campo 1");
        jCampo1.setBounds(10, 10, 50, 20);
        jtfCampo1 = new JTextField();
        jtfCampo1.setBounds(10, 30, 200, 20);
        jCampo2 = new JLabel("Campo 2");
        jCampo2.setBounds(225, 10, 50, 20);
        jtfCampo2 = new JTextField();
        jtfCampo2.setBounds(225, 30, 200, 20);
        jLog = new JLabel("Log de Eventos");
        jLog.setBounds(10, 80, 90, 20);
        taLog = new TextArea("", 10, 60, TextArea.SCROLLBARS_VERTICAL_ONLY);
        taLog.setBounds(10, 100, 400, 150);
        taLog.setEditable(true);
        this.add(jCampo1);
        this.add(jtfCampo1);
        this.add(jCampo2);
        this.add(jtfCampo2);
        this.add(jLog);
        this.add(taLog);
        this.add(jbBotao);
        jbBotao.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                addEventos("Botao clicado");
                System.out.println("Botao Foi Clicado");
            }
        });
    }

 

O objeto "taLog" havia sido criado depois da ação do click. 

Espero ter ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×