JButton Evento

Olá pessoal comecei estudar a Swing fiz uma sistema de formulário bem simples, gostaria de saber como insiro evento nos botões. Estou querendo usar uma classe separada para adicionar os eventos.

Formulario.java

[code]import java.awt.Cursor;
import java.awt.Dimension;
import java.util.Calendar;
import java.util.Date;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JProgressBar;
import javax.swing.JRadioButton;
import javax.swing.JSeparator;
import javax.swing.JSlider;
import javax.swing.JSpinner;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;
import javax.swing.SpinnerDateModel;

/**
*

  • @author Mauro
    */

public class Formulario extends JFrame{

static final int FPS_MIN = 0;
static final int FPS_MAX = 100;
static final int FPS_INIT = 50;

//Campos a serem criados
//Rotulo
private JLabel lblTitulo, lblRa, lblNome, lblEndereco, lblSexo, lblFoto, lblDesempenho, lblSenha, lblDisciplinas, lblEntrada, lblProgresso;

//Caixa de Texto
private JTextField tfRa, tfNome, tfEndereco;

//Radio Group
private ButtonGroup btsexo;
private JRadioButton rbmasculino, rbfeminino;

//ComboBox
private JComboBox cbFoto;
String[] foto = {"Masculino", "Feminino"};

//Buttons
private JButton btEnviar, btSair;

//JSlider
private JSlider sDesempenho;

//JSeparetor
private JSeparator lnLinha;

//Password
private JPasswordField psSenha;

//Disciplina
private JList jlDisciplina;
String[] disciplinas = {"Banco de dados", "Java"};

//Entrada
private JSpinner jpEntrada;
Calendar cal = Calendar.getInstance();

int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int day = cal.get(Calendar.DATE);

//Progresso
private JProgressBar jpbProgresso;

//Painel
private JTabbedPane jtpPainel;

//Eventos
Evento mouse = new Evento();


public Formulario(){
    //Titulo da Janela
    setTitle("Cadastro de Alunos");

    //Tamanho da Janela, largura e altura
    setPreferredSize(new Dimension(500,700));

    //Tipo de Layout
    setLayout(null);

    //Metodo para criar componetes
    CriarComponetes();

    //Metodo de adicionar metodos
    AdicionarMetodos();

    //Cofigura posições na tela
    ConfiguraPosicoes();

    //Pack
    pack();

    //Fechar
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    //Mostra ou não a janela
    setVisible(true);
}

private void CriarComponetes() {

   //Titul
   lblTitulo = new JLabel("Cadastro de Alunos");

   //Ra
   lblRa = new JLabel("Ra");
   tfRa = new JTextField(10);

   //Nome
   lblNome = new  JLabel("Nome");
   tfNome = new JTextField(20);

   //Endereço
   lblEndereco = new JLabel("Endereço");
   tfEndereco = new JTextField(20);

   //Sexo
   lblSexo = new JLabel("Sexo");
   btsexo = new ButtonGroup();
   rbmasculino = new JRadioButton("Masculino");
   rbfeminino = new JRadioButton("Feminino");

   //ComboBox
   lblFoto = new JLabel("Foto");
   cbFoto = new JComboBox(foto);

   //JSeparetor
   lnLinha = new JSeparator();

   //Slider
   lblDesempenho = new JLabel("Desempenho");
   sDesempenho = new JSlider(JSlider.HORIZONTAL,FPS_MIN, FPS_MAX, FPS_INIT);

   //Senha
   lblSenha = new JLabel("Senha");
   psSenha = new JPasswordField(10);

   //Disciplina
   lblDisciplinas = new JLabel("Disciplina");
   jlDisciplina = new JList(disciplinas);

   //Entrada
   lblEntrada = new JLabel("Entrada");
   Date date = new Date(year-1900, month, day);
   SpinnerDateModel sm = new SpinnerDateModel(date, null, null,Calendar.DAY_OF_MONTH);
   jpEntrada = new JSpinner(sm);

   //Progresso
   lblProgresso = new JLabel("Progresso");
   jpbProgresso = new JProgressBar();


   //Painel
   jtpPainel = new JTabbedPane();
   jtpPainel.add(new JPanel(), "Telefones");
   jtpPainel.add(new JPanel(), "Mensalidades");

   //Botoes
   btEnviar = new JButton("Enviar");
   btSair = new JButton("Sair");
  

}

private void AdicionarMetodos() {
    //Titulo
    add(lblTitulo);

    //Ra
    add(lblRa);
    add(tfRa);

    //Nome
    add(lblNome);
    add(tfNome);

    //Endereço
    add(lblEndereco);
    add(tfEndereco);
    
    //Sexo
    add(lblSexo);
    add(rbmasculino);
    add(rbfeminino);
    btsexo.add(rbmasculino);
    btsexo.add(rbfeminino);

    //Foto
    add(lblFoto);
    add(cbFoto);

    //Separator
    add(lnLinha);

    //Slider
    add(lblDesempenho);
    add(sDesempenho);

    //Senha
    add(lblSenha);
    add(psSenha);

    //Disciplinas
    add(lblDisciplinas);
    add(jlDisciplina);

    //Entrada
    add(lblEntrada);
    add(jpEntrada);

    //Progresso
    add(lblProgresso);
    add(jpbProgresso);

    //Painel
    add(jtpPainel);

    //Botoes
    add(btEnviar);
    add(btSair);
    

}

private void ConfiguraPosicoes() {
    //Posição x, Posição y, Largura, Altura
    lblTitulo.setBounds(200, 20, 200, 10);

    //Ra
    lblRa.setBounds(10, 50, 50, 20);
    tfRa.setBounds(60, 50, 100, 20);

    //Nome
    lblNome.setBounds(10, 80, 50, 20 );
    tfNome.setBounds(60, 80, 100, 20 );

    //Endereço
    lblEndereco.setBounds(10,110, 70, 20);
    tfEndereco.setBounds(90, 110, 100, 20);

    //Sexo
    lblSexo.setBounds(10, 140, 50, 20);
    rbmasculino.setBounds(20, 170, 100, 20);
    rbfeminino.setBounds(20, 200, 100, 20);

    //Foto
    lblFoto.setBounds(300, 80, 50, 20);
    cbFoto.setBounds(300, 110, 120, 20);
    
    //Linha
    lnLinha.setBounds(10,230, 470, 10);

    //Desempenho
    lblDesempenho.setBounds(10, 260, 90, 20);
    sDesempenho.setBounds(100, 260, 300, 50);
    sDesempenho.setMajorTickSpacing(100);
    sDesempenho.setMinorTickSpacing(1);
    sDesempenho.setPaintTicks(true);
    sDesempenho.setPaintLabels(true);

    //Senha
    lblSenha.setBounds(10, 320, 50, 20);
    psSenha.setBounds(70, 320, 100, 20);

    //Disciplina
    lblDisciplinas.setBounds(10, 350, 90, 20);
    jlDisciplina.setBounds(100, 350, 100, 80);

    //Entrada
    lblEntrada.setBounds(10, 450, 60, 20);
    jpEntrada.setBounds(80, 450, 100, 20);
    JSpinner.DateEditor de = new JSpinner.DateEditor(jpEntrada, "dd/MM/yyyy");
    jpEntrada.setEditor(de);

    //Progresso
    lblProgresso.setBounds(10, 480, 60, 20);
    jpbProgresso.setBounds(80, 480, 150, 20);
    jpbProgresso.setCursor(Cursor.getDefaultCursor());
    jpbProgresso.setValue(70);

    //Painel
    jtpPainel.setBounds(10, 510, 300, 100);

    //Botoes
    btEnviar.setBounds(150,640, 80,20);
    btSair.setBounds(250,640, 80,20);

}

public static void main(String[] args){
    Formulario obj = new Formulario();
    Evento con = new Evento();
    obj.addWindowListener(con);

}

}
[/code]

Evento.java

[/code][code]
import java.awt.event.ActionEvent;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JOptionPane;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Mauro
 */
public class Evento extends WindowAdapter {

    @Override
    public void windowClosing(WindowEvent evento)
    {
        JOptionPane.showMessageDialog(null,"Sair");
        System.exit(0);
    }

    @Override
    public void windowIconified(WindowEvent evento)
    {
        JOptionPane.showMessageDialog(null,"Minimizar");
    }

    @Override
    public void windowDeiconified(WindowEvent evento)
    {
        JOptionPane.showMessageDialog(null,"Maximar");
    }
    
    public void mouseCliked(MouseEvent e){
        
    }

}

Para ter uma classe separada para cada evento, vc deve criar a classe e implementar ActionListener:

public class MeuEvento implements ActionListener

e na classe usar:

meuBotao.addActionListener(evento);

Mas acho que vc iria criar classes demais… a solução pode ser fazendo classes internas:

//No meio da classe... . . . ActionListener evento = new ActionListener(){ public void actionPerformed(ActionEvent e) { //Manipulações do evento } }; meuBotao.addActionListener(evento);

Da uma olhada nos artigos sobre awt e swing, la deve ter alguma coisa sobre eventos:
http://www.guj.com.br/article.list.logic#category_32

Espero ter ajudado.

Abs