Tratamento de Evento Duvida

1 resposta
jframe
W

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:

Botao: MouseListener - Implementar todos os métodos desta interface.

Frame: MouseListener - Implementar todos os métodos desta interface.

Campo 1 e 2:FocusListener - Implementar todos os métodos desta interface.

Campo 1 e 2:KeyListener - Implementar o método keyTyped informando no log a tecla pressionada.

Seria para ser mais ou menos igual a da foto

eaf451337ba60bab83d764ec7a1eee864aa31a52

meu codigo

package eventolog.luciano;

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 EventoLogLuciano extends JFrame {

private JLabel jCampo1, jCampo2, jLog;
private JTextField jtfCampo1, jtfCampo2;
private TextArea taLog;
private JButton jbBotao;

public EventoLogLuciano() {
    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 EventoLogLuciano();
    
    x.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
    x.setVisible(true);
    
    }
    

}

1 Resposta

Gabriel_das_Neves

@Wicaro você pode fazer de um jeito que todo os componentes tenham particularmente seus eventos, tipo desse jeito aqui(vou fazer com eventos do mouse em apenas dois botões)

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import java.awt.GridLayout;

import javax.swing.JFrame;

import javax.swing.JButton;
public class Exemplo extends JFrame{

private JButton botao1 = new JButton(Botão 1);

private JButton botao2 = new JButton(Botão 2);
public Exemplo(){
    super("Exemplo");
    
    this.setLayout(new GridLayout(1,2));
    this.setSize(300,300);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setResizable(false);
    this.setLocationRelativeTo(null);
    this.setVisible(true);
    
    this.add(botao1);
    this.add(botao2);
    
    botao1.addMouseListener(new MouseListener(){
        @Override
        public void mouseClicked(MouseEvent me) {
            System.out.println("Clicou no botão 1");
        }

        @Override
        public void mousePressed(MouseEvent me) {
            System.out.println("Pressionou o botao 1");
        }

        @Override
        public void mouseReleased(MouseEvent me) {
            System.out.println("Soltou o botao 1");
        }

        @Override
        public void mouseEntered(MouseEvent me) {
            System.out.println("passou com o mouse em cima do botao 1");
        }

        @Override
        public void mouseExited(MouseEvent me) {
            System.out.println("tirou o mouse de cima do botao 1");
        }
        
    });

    botao2.addMouseListener(new MouseListener(){
        @Override
        public void mouseClicked(MouseEvent me) {
            System.out.println("Clicou no botão 2");
        }

        @Override
        public void mousePressed(MouseEvent me) {
            System.out.println("Pressionou o botao 2");
        }

        @Override
        public void mouseReleased(MouseEvent me) {
            System.out.println("Soltou o botao 2");
        }

        @Override
        public void mouseEntered(MouseEvent me) {
            System.out.println("passou com o mouse em cima do botao 2");
        }

        @Override
        public void mouseExited(MouseEvent me) {
            System.out.println("tirou o mouse de cima do botao 2");
        }
    });


}



public static void main(String[] args){
    new Exemplo();
}

}

desse jeito você pode fazer seus eventos de mouse, keyboard e etc… Espero ter ajudado, até algum dia !

Criado 29 de setembro de 2018
Ultima resposta 3 de out. de 2018
Respostas 1
Participantes 2