Projetos Java com o Eclipse

1. OlaMundo.java

public class OlaMundo {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println("Olá Mundo!");

    }

}

Console:

Olá Mundo!


2. CalculoJurosSimples.java

public class CalculoJurosSimples {

    public static void main(String args[]) {
        int prestacoes = 6;
        double jurosMensal = 0.02;
        double valorEmprestado = 1000.0;
        double jurosPeriodo = prestacoes * jurosMensal;
        double valorTotal = valorEmprestado * (1 + jurosPeriodo);
        double valorJuros = valorTotal - valorEmprestado;
        double valorParcela = valorTotal / prestacoes;
        System.out.println("Valor total a pagar: " + valorTotal);
        System.out.println("Valor dos juros: " + valorJuros);
        System.out.println("Valor da parcela: " + valorParcela);
    }
}

Console:

Valor total a pagar: 1120.0
Valor dos juros: 120.0
Valor da parcela: 186.66666666666666

Obs:
prestação = 1000/6 + 1000*0.02 = 1000(1/6 + 0.02)
valorTotal = 6 * prestação = 1000(1 + 0.02*6)


3. Mat.java

import javax.swing.*;//biblioteca dos botões  
import java.awt.*;//biblioteca do evento clicar
import java.awt.event.*;//biblioteca do evento clicar

// a classe Mat torna-se subclasse de JFrame e implementa as
// interfaces da classe ActionListener
public class Mat extends JFrame implements ActionListener {

    // declarando objetos membros da classe
    static Box Tela;
    static JButton botao;// vai somar
    static JButton botao2;// vai subtrair
    static JButton botao3;// vai multiplica
    static JButton botao4;// vai dividir

    static JTextField entrada1;// entrada do primeiro valor
    static JTextField entrada2;// entrada do segundo valor
    static JTextField saida;// resultado da operação
    float v1 = 0, v2 = 0, total = 0;

    // O metodo ActionListener faz os botoes iteragirem com caixa de texto
    public void actionPerformed(ActionEvent evento) {

        // Exceções (tratamento de erro)
        try {
            v1 = Float.parseFloat(entrada1.getText());
            v2 = Float.parseFloat(entrada2.getText());
        } catch (NumberFormatException erro) {
            saida.setText("ERRO");
            return;
        }

        // condicionando eventos
        if (evento.getSource() == botao)
            total = v1 + v2;

        if (evento.getSource() == botao2)
            total = v1 - v2;

        if (evento.getSource() == botao3)
            total = v1 * v2;

        if (evento.getSource() == botao4)
            total = v1 / v2;

        // saida do resultado
        saida.setText("= " + total);
    };

    public static void main(String[] args) {

        // criando constructor da classe Mat
        // este constructor se encarrega de montar Tela, botoes e caixas de
        // texto
        Mat frame = new Mat("");

        frame.add(Tela);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(212, 258);
        frame.setVisible(true);

        // atributos (propriedades) dos objetos
        botao.setLocation(0, 0);
        botao2.setLocation(50, 0);
        botao3.setLocation(100, 0);
        botao4.setLocation(150, 0);

        saida.setLocation(48, 150);
        saida.setSize(100, 40);
        saida.setForeground(Color.black);
        saida.setBackground(Color.orange);
        saida.setOpaque(true);
        saida.setEditable(false);// Não permite escrever(apenas leitura)

        entrada1.setLocation(48, 50);
        entrada1.setSize(100, 40);
        entrada1.setForeground(Color.black);
        entrada1.setBackground(Color.white);
        entrada1.setOpaque(true);

        entrada2.setLocation(48, 100);
        entrada2.setSize(100, 40);
        entrada2.setForeground(Color.black);
        entrada2.setBackground(Color.white);
        entrada2.setOpaque(true);

    }

    // o trabalho de criar os objetos tela, botoes e cx de texto é
    // feito no constructor da classe
    public Mat(String S) {

        // super chama o constructor da classe JFrame
        super(S);

        // construindo instancia do objeto
        Tela = new Box(BoxLayout.Y_AXIS);
        botao = new JButton("+");
        botao2 = new JButton("-");
        botao3 = new JButton("x");
        botao4 = new JButton("/");

        saida = new JTextField("");
        entrada1 = new JTextField("");
        entrada2 = new JTextField("");

        // botões ganha uma ActionListener(para ações)
        botao.addActionListener(this);
        botao2.addActionListener(this);
        botao3.addActionListener(this);
        botao4.addActionListener(this);

        // inserindo objetos na tela (frame)
        Tela.add(botao);// botao inserido na tela
        Tela.add(botao2);// botao2 inserido na tela
        Tela.add(botao3);// botao3 inserido na tela
        Tela.add(botao4);// botao4 inserido na tela
        Tela.add(saida);// textofield inserido na tela
        Tela.add(entrada1);// textofield inserido na tela
        Tela.add(entrada2);// textofield inserido na tela

    }
}

Console:


4. Exemplo de projeto com banco de dados:

4.1. Crie a tabela contatos.sql no Mysql do Wamp:

CREATE TABLE IF NOT EXISTS `contatos` (
  `id` bigint(10) NOT NULL AUTO_INCREMENT,
  `nome` varchar(50) NOT NULL,
  `apelido` varchar(50) NOT NULL,
  `data_nascimento` date NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=12 ;


4.2. Criando a estrutura (pacotes ou pastas)

A figura abaixo mostra a estrutura do projeto Agenda, que possui quatro pacotes (controle, dao, frame e model).



4.3. Adição da biblioteca mysql-connector-java-5.1.23-bin.jar

A biblioteca mysql-connector-java-5.1.23-bin.jar foi adicionada dando um clique com o botão direito no projeto Agenta > Properties > Libraries > Add External JARs...
Esta biblioteca é responsábel pela conexão com o banco de dados.
Pode fazer o download direto em http://dev.mysql.com/downloads/connector/j/ ou apenas copiá-la do Netbeans localizada na pasta ...\ide\modules\ext e depois adicioná-la ao projeto.


4.4. Criação do código fonte

package controle: ContatoController.java

package controle;

import dao.ContatoDao;
import model.Contato;
import javax.swing.*;
import java.sql.Date;
import java.sql.SQLException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.List;

public class ContatoController {

    private Date formatarData(String data) throws ParseException {
        DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
        return new Date(formatter.parse(data).getTime());
    }

    public void salvar(String nome, String apelido, String dtNascimento) throws
            SQLException, ParseException {
        Contato contato = new Contato();
        contato.setNome(nome);
        contato.setApelido(apelido);
        contato.setDtNascimento(formatarData(dtNascimento));
        new ContatoDao().salvar(contato);
    }

    public void alterar(long id, String nome, String apelido, String dtNascimento) throws ParseException, SQLException {
        Contato contato = new Contato();
        contato.setId(id);
        contato.setNome(nome);
        contato.setApelido(apelido);
        contato.setDtNascimento(formatarData(dtNascimento));
        new ContatoDao().alterar(contato);
    }

    public List<Contato> listaContatos() {
        ContatoDao dao = new ContatoDao();
        try {
            return dao.findContatos();
        } catch (SQLException e) {
            JOptionPane.showMessageDialog(null, "Problemas ao localizar contato\n" + e.getLocalizedMessage());
        }
        return null;
    }

    public void excluir(long id) throws SQLException {
        new ContatoDao().excluir(id);
    }

    public Contato buscaContatoPorNome(String nome) throws SQLException {
        ContatoDao dao = new ContatoDao();
        return dao.findByName(nome);
    }
}

package dao: ConnectionDataBase.java

package dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnectionDataBase {

    private static final String URL_MYSQL = "jdbc:mysql://localhost:3306/programador";
    private static final String DRIVER_CLASS = "com.mysql.jdbc.Driver";
    private static final String USER = "root";
    private static final String PASS = "";

    public static Connection getConnection() {
        System.out.println("Conectando ao Banco de Dados");
        try {
            Class.forName(DRIVER_CLASS);
            return DriverManager.getConnection(URL_MYSQL, USER, PASS);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
        return null;
    }
}


package dao: ContatoDao.java

package dao;

import model.Contato;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class ContatoDao extends GenericDao {

    public void salvar(Contato contato) throws SQLException {
        String insert = "INSERT INTO contatos(nome, apelido, data_nascimento) VALUES(?,?,?)";
        save(insert, contato.getNome(), contato.getApelido(), contato.getDtNascimento());
    }

    public void alterar(Contato contato) throws SQLException {
        String update = "UPDATE CONTATOS " + "SET nome = ?, apelido = ?, data_nascimento = ? " + "WHERE id = ?";
        update(update, contato.getId(), contato.getNome(), contato.getApelido(),
                contato.getDtNascimento());
    }

    public void excluir(long id) throws SQLException {
        String delete = "DELETE FROM CONTATOS WHERE id = ?";
        delete(delete, id);
    }

    public List<Contato> findContatos() throws SQLException {
        List<Contato> contatos = new ArrayList<Contato>();
        String select = "SELECT * FROM CONTATOS";
        PreparedStatement stmt = getConnection().prepareStatement(select);
        ResultSet rs = stmt.executeQuery();
        while (rs.next()) {
            Contato contato = new Contato();
            contato.setId(rs.getLong("id"));
            contato.setNome(rs.getString("nome"));
            contato.setApelido(rs.getString("apelido"));
            contato.setDtNascimento(rs.getDate("data_nascimento"));
            contatos.add(contato);
        }
        rs.close();
        stmt.close();
        return contatos;
    }

    public Contato findByName(String nome) throws SQLException {
        String select = "SELECT * FROM CONTATOS WHERE nome = ?";
        Contato contato = null;
        PreparedStatement stmt = getConnection().prepareStatement(select);
        stmt.setString(1, nome);
        ResultSet rs = stmt.executeQuery();
        while (rs.next()) {
            contato = new Contato();
            contato.setId(rs.getLong("id"));
            contato.setNome(rs.getString("nome"));
            contato.setApelido(rs.getString("apelido"));
            contato.setDtNascimento(rs.getDate("data_nascimento"));
        }
        rs.close();
        stmt.close();
        return contato;
    }
}


package dao: GenericDao.java

package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public abstract class GenericDao {

    private Connection connection;

    protected GenericDao() { /* é o construtor da classe GenericDao configurado para executar o metodo getConnection() na sua inicialização*/
        this.connection = ConnectionDataBase.getConnection();
    }

    protected Connection getConnection() {  /*sobrescrita do método getConnection()   para retornar a conexão*/
        return connection;
    }

    protected void save(String insertSql, Object... parametros) throws
            SQLException {
        PreparedStatement pstmt = getConnection().prepareStatement(insertSql);
        for (int i = 0; i < parametros.length; i++) {
            pstmt.setObject(i + 1, parametros[i]);
        }
        pstmt.execute();
        pstmt.close();
    }

    protected void update(String updateSql, Object id, Object... parametros)
            throws SQLException {
        PreparedStatement pstmt = getConnection().prepareStatement(updateSql);
        for (int i = 0; i < parametros.length; i++) {
            pstmt.setObject(i + 1, parametros[i]);
        }
        pstmt.setObject(parametros.length + 1, id);
        pstmt.execute();
        pstmt.close();
    }

    protected void delete(String deleteSql, Object... parametros) throws
            SQLException {
        PreparedStatement pstmt = getConnection().prepareStatement(deleteSql);
        for (int i = 0; i < parametros.length; i++) {
            pstmt.setObject(i + 1, parametros[i]);
        }
        pstmt.execute();
        pstmt.close();
    }
}


package frame: ContatoFrame.java

package frame;

import controle.ContatoController;
import model.Contato;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.List;

public class ContatoFrame extends JFrame {

    private JLabel lbNome, lbApelido, lbDtNascimento;
    private JTextField txtNome, txtApelido, txtDtNascimento, txtLocalizar;
    private JButton btnSalvar, btnAlterar, btnExcluir, btnClear, btnLocalizar;
    private JButton btnPrimeiro, btnProximo, btnAnterior, btnUltimo;
    private List<Contato> contatoList = new ContatoController().listaContatos();
    private int registroAtual = 0;

    public ContatoFrame() {
        super("Contatos");
        Container tela = getContentPane();
        setLayout(null);
        lbNome = new JLabel("Nome");
        lbApelido = new JLabel("Apelido");
        lbDtNascimento = new JLabel("Data de Nascimento(dd/mm/aaaa)");
        lbNome.setBounds(10, 10, 240, 15);
        lbApelido.setBounds(10, 50, 240, 15);
        lbDtNascimento.setBounds(10, 90, 240, 15);
        lbNome.setForeground(Color.BLACK);
        lbApelido.setForeground(Color.BLACK);
        lbDtNascimento.setForeground(Color.BLACK);
        lbNome.setFont(new Font("Courier New", Font.BOLD, 14));
        lbApelido.setFont(new Font("Courier New", Font.BOLD, 14));
        lbDtNascimento.setFont(new Font("Courier New", Font.BOLD, 14));
        tela.add(lbNome);
        tela.add(lbApelido);
        tela.add(lbDtNascimento);
        txtNome = new JTextField();
        txtApelido = new JTextField();
        txtDtNascimento = new JTextField();
        txtNome.setBounds(10, 25, 265, 20);
        txtApelido.setBounds(10, 65, 265, 20);
        txtDtNascimento.setBounds(10, 105, 265, 20);
        tela.add(txtNome);
        tela.add(txtApelido);
        tela.add(txtDtNascimento);
        btnSalvar = new JButton("Salvar");
        btnAlterar = new JButton("Alterar");
        btnExcluir = new JButton("Excluir");
        btnClear = new JButton("Limpar");
        btnPrimeiro = new JButton("|<");
        btnAnterior = new JButton("<<");
        btnProximo = new JButton(">>");
        btnUltimo = new JButton(">|");
        btnSalvar.setBounds(280, 25, 80, 20);
        btnAlterar.setBounds(280, 65, 80, 20);
        btnExcluir.setBounds(280, 105, 80, 20);
        tela.add(btnSalvar);
        tela.add(btnAlterar);
        tela.add(btnExcluir);
        btnPrimeiro.setBounds(10, 135, 50, 20);
        btnAnterior.setBounds(60, 135, 50, 20);
        btnClear.setBounds(110, 135, 75, 20);
        btnProximo.setBounds(185, 135, 50, 20);
        btnUltimo.setBounds(235, 135, 50, 20);
        tela.add(btnPrimeiro);
        tela.add(btnAnterior);
        tela.add(btnClear);
        tela.add(btnProximo);
        tela.add(btnUltimo);
        JLabel lbLocalizar = new JLabel("Localizar por nome");
        lbLocalizar.setBounds(10, 160, 220, 20);
        txtLocalizar = new JTextField();
        txtLocalizar.setBounds(10, 180, 220, 20);
        btnLocalizar = new JButton("Ir");
        btnLocalizar.setBounds(230, 180, 55, 20);
        tela.add(lbLocalizar);
        tela.add(txtLocalizar);
        tela.add(btnLocalizar);
        setSize(400, 250);
        setVisible(true);
        setLocationRelativeTo(null);
        btnSalvar.addActionListener(
                new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                onClickSalvar();
            }
        });
        btnAlterar.addActionListener(
                new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                onClickAlterar();
            }
        });
        btnExcluir.addActionListener(
                new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                onClickExcluir();
            }
        });
        btnClear.addActionListener(
                new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                clearFields();
                registroAtual = 0;
            }
        });
        btnLocalizar.addActionListener(
                new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                onClickLocalizar();
            }
        });
        btnPrimeiro.addActionListener(
                new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                onClickPrimeiro();
            }
        });
        btnAnterior.addActionListener(
                new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                onClickAnterior();
            }
        });
        btnProximo.addActionListener(
                new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                onClickProximo();
            }
        });
        btnUltimo.addActionListener(
                new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                onClickUltimo();
            }
        });
    }

    private void onClickUltimo() {
        registroAtual = contatoList.size() - 1;
        getValores(registroAtual);
    }

    private void onClickProximo() {
        if (registroAtual != contatoList.size() - 1) {
            getValores(++registroAtual);
        }
    }

    private void onClickAnterior() {
        if (registroAtual != 0) {
            getValores(--registroAtual);
        }
    }

    private void onClickPrimeiro() {
        registroAtual = 0;
        getValores(registroAtual);
    }

    private void getValores(int index) {
        if (index <= contatoList.size() - 1) {
            Contato contatoAtual = contatoList.get(index);
            txtNome.setText(contatoAtual.getNome());
            txtApelido.setText(contatoAtual.getApelido());
            txtDtNascimento.setText(new SimpleDateFormat("dd/MM/yyyy").format(contatoAtual.getDtNascimento()));
        }
    }

    private void onClickAlterar() {
        ContatoController cc = new ContatoController();
        long id = contatoList.get(registroAtual).getId();
        try {
            cc.alterar(id, txtNome.getText(), txtApelido.getText(),
                    txtDtNascimento.getText());
            JOptionPane.showMessageDialog(this, "Contato alterado com sucesso!");
            clearFields();
            contatoList = new ContatoController().listaContatos();
        } catch (SQLException e) {
            JOptionPane.showMessageDialog(this, "Nao foi possivel alterar contato!\n" + e.getLocalizedMessage());
        } catch (ParseException e) {
            JOptionPane.showMessageDialog(this, "Data possui formato inválido!\n"
                    + e.getLocalizedMessage());
        }
    }

    private void onClickSalvar() {
        ContatoController cc = new ContatoController();
        try {
            cc.salvar(txtNome.getText(), txtApelido.getText(),
                    txtDtNascimento.getText());
            JOptionPane.showMessageDialog(this, "Contato salvo com sucesso!");
            clearFields();
            contatoList = new ContatoController().listaContatos();
        } catch (SQLException e) {
            JOptionPane.showMessageDialog(this, "Nao foi possivel salvar contato!\n" + e.getLocalizedMessage());
        } catch (ParseException e) {
            JOptionPane.showMessageDialog(this, "Data possui formato inválido!\n"
                    + e.getLocalizedMessage());
        }
    }

    private void onClickExcluir() {
        ContatoController cc = new ContatoController();
        long id = contatoList.get(registroAtual).getId();
        try {
            cc.excluir(id);
            JOptionPane.showMessageDialog(this, "Contato excluido com sucesso!");
            clearFields();
            contatoList = new ContatoController().listaContatos();
        } catch (SQLException e) {
            JOptionPane.showMessageDialog(this, "Nao foi possivel excluir o contato!\n" + e.getLocalizedMessage());
        }
    }

    private void onClickLocalizar() {
        ContatoController cc = new ContatoController();
        try {
            Contato c = cc.buscaContatoPorNome(txtLocalizar.getText());
            txtNome.setText(c.getNome());
            txtApelido.setText(c.getApelido());
            txtDtNascimento.setText(new SimpleDateFormat("dd/MM/yyyy").format(c.getDtNascimento()));
        } catch (SQLException e) {
            JOptionPane.showMessageDialog(this, "Ocorreu um erro, tente novamente!\n" + e.getLocalizedMessage());
        } catch (NullPointerException e) {
            JOptionPane.showMessageDialog(this, "Contato não localizdo ou não existe!\n" + e.getLocalizedMessage());
        }
    }

    private void clearFields() {
        txtNome.setText("");
        txtApelido.setText("");
        txtDtNascimento.setText("");
        txtLocalizar.setText("");
    }

    public static void main(String[] args) {
        ContatoFrame frame = new ContatoFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}


package model: Contato.java

package model;

import java.sql.Date;

public class Contato {

    private Long id;
    private String nome;
    private String apelido;
    private Date dtNascimento;
//gere os métodos getters and setters

    public String getApelido() {
        return apelido;
    }

    public void setApelido(String apelido) {
        this.apelido = apelido;
    }

    public Date getDtNascimento() {
        return dtNascimento;
    }

    public void setDtNascimento(Date dtNascimento) {
        this.dtNascimento = dtNascimento;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }
}


Execução da classe principal: ContatoFrame.java

Run > Run As > Java Application


Visualização do código fonte em imagem


Clique nos links abaixo para o  download dos arquivo do projeto, a tabela é só importar pelo pelo phpMyadmin após criar o banco de dados programador:

1) ContatoController.java (clique no link para download)

2) ConnectionDataBase.java (clique no link para download)

3) ContatoDao.java (clique no link para download)

4) GenericDao.java (clique no link para download)

5) ContatoFrame.java (clique no link para download)

6) Contato.java (clique no link para download)


7) contatos.sql (clique no link para download)