JButton Evento

1 resposta
mauraoemau

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
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);

    }
}
Evento.java

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){
        
    }

}

1 Resposta

Thiago_MuiLoko

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

Criado 26 de agosto de 2010
Ultima resposta 26 de ago. de 2010
Respostas 1
Participantes 2