Como Utilizar JComboBox + Banco de Dados

5 respostas
R

Olá a todos do forum, tudo bem?

Seguinte, eu fiz um rápido (mt rápido mesmo) curso basico de java, so para ter noções de alguns comandos, e agora estou
tentando montar um projeto simples, um cadastro.

Ja criei o Banco de dados e estou utilizando uma classe ProdutoDAO para fazer a comunicação.
Utilizo uma classe chamada CadastraProduto para criar a tela e os campos, alem do botão que envia os dados para a classe
DAO e de lá para o Banco.

Pois bem, estou tentando fazer o seguinte:
Tenho no Banco o campo: descrição, que é um campo de Strings.

Gostaria de usar as informações desse campo para alimentar uma JComboBox. Aí está o problema.

Ja ví varios topicos, cada um explicando uma forma diferente, mais como não fiz um curso decente, algum comandos eu não entendo
direito, como o Iterator e o Statement .

Se alguem aqui do Forum puder criar um codigo e me explicar como criar essa JComboBox eu ficaria muito Feliz =]

Ja faz 3 dias que estou tentando aprender, lendo e tudo, mais na hora de fazer nunca da certo.

Vou tentar colocar uma parte do meu Codigo aki, se estiver errado, por favor me corrijam, ainda estou aprendendo =)

MEU ProdutoDAO

package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import model.Produto;
import util.ConnectionFactory;

public class ProdutoDAO {
	private static Connection conexao;
	
	@SuppressWarnings("static-access")
	public void ConnectionFactory() throws SQLException{
		ConnectionFactory con = new ConnectionFactory();
		conexao = con.getConnection();
	}	
	
	public void salvar(Produto produto)throws SQLException{
		this.ConnectionFactory();
		try {
			String sql = "insert into produto (codProduto, descricao, procoCusto, qtdMinima, qtdMaxima) values (?,?,?,?,?)";

			PreparedStatement query = this.conexao.prepareStatement(sql);

			query.setInt(1, produto.getCodProduto());
			query.setString(2, produto.getDescricao());
			query.setFloat(3, produto.getPrecoCusto());
			query.setInt(4, produto.getQtdMinima());
			query.setInt(5, produto.getQtdMaxima());

			query.execute();
			query.close();

		} catch (Exception e) {
			
			System.out.println("erro ao salvar" + e.getMessage());
			conexao.commit();
			conexao.close();
		}
	}
	
	
	public void remover(Produto produto) throws SQLException {
		this.ConnectionFactory();
		String sql = "delete from produto where codProduto = ?";
		try {
			PreparedStatement query = this.conexao.prepareStatement(sql);
			query.setInt(1, produto.getCodProduto());
			query.execute();
			query.close();
		}catch (Exception e){
			e.printStackTrace();
			conexao.commit();
			conexao.close();
		}
		
	}
	
	public void atualizar(Produto produto)throws SQLException{
		this.ConnectionFactory();
		String sql = "update produto set descricao = ?, set precoCusto = ?, set qtdMinima = ?, set qtd Maxima = ?, where codProduto = ?";
		try{
			PreparedStatement query = this.conexao.prepareStatement(sql);
			
			query.setString(1, produto.getDescricao());
			query.setFloat(2, produto.getPrecoCusto());
			query.setInt(3, produto.getQtdMinima());
			query.setInt(4, produto.getQtdMaxima());
			query.setInt(5, produto.getCodProduto());


			
			query.execute();
			query.close();
		}catch (Exception e){
			System.out.println("Erro no Banco");
			conexao.commit();
			conexao.close();
		}
	}
	
	public List<Produto> buscar(String busca, String param) throws SQLException{
		this.ConnectionFactory();
		String sql = "select * from produto";
	
		PreparedStatement query = this.conexao.prepareStatement(sql);
		ResultSet result =  query.executeQuery();
		
		List<Produto> listagens = new ArrayList<Produto>();
		if(param.equalsIgnoreCase("descricao")){
			while (result.next()){
				Produto listagem = new Produto();
				if (busca.equals(result.getString("descricao"))){
					listagem.setCodProduto(result.getInt("codProduto"));
					listagem.setDescricao(result.getString("descricao"));
					listagem.setPrecoCusto(result.getFloat("precoCusto"));
					listagem.setQtdMinima(result.getInt("qtdMinima"));
					listagem.setQtdMaxima(result.getInt("qtdMaxima"));
					listagens.add(listagem);
				}				
			}	
		}
		result.close();
		query.close();
		return listagens;	
	
		}

	
	}

Classe CadastraProduto

package teste;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

import dao.ListagemDAO;
import dao.ProdutoDAO;
import model.Listagem;

public class CadastraProduto {
	private JFrame janela;
	private JPanel cadastra;
	private JButton salvar;
	private JLabel lblDescricao;
	private JLabel lblCod;
	private JLabel lblPrecoCusto;
	private JLabel lblQtdMinima;
	private JLabel lblQtdMaxima;
	private JTextField txtDescricao;
	private JTextField txtCod;
	private JTextField txtPrecoCusto;
	private JTextField txtQtdMinima;
	private JTextField txtQtdMaxima;
	private JComboBox comboBox;


public void criaTelaCadastro(){
	janela = new JFrame("Cadastro Produtos");
	janela.setLayout(null);
	janela.setSize(600,400);
		
	cadastra = new JPanel();
	cadastra.setBounds(1,1,600,600);
	cadastra = (JPanel) janela.getContentPane();

	
	
	lblCod = new JLabel("Codigo: ");
	lblCod.setBounds(1,1,100,30);
	
	lblDescricao = new JLabel("Descrição: ");
	lblDescricao.setBounds(1,33,100,30);
	
	lblPrecoCusto = new JLabel("PrecoCusto: ");
	lblPrecoCusto.setBounds(1,66,100,30);
	
	lblQtdMaxima = new JLabel("Quantidade Maxima");
	lblQtdMaxima.setBounds(1,99,100,30);
	
	lblQtdMinima = new JLabel("quantidade Minima");
	lblQtdMinima.setBounds(1,123,100,30);
	
	txtCod = new JTextField();
	txtCod.setBounds(43,5,300,20);
	
	txtDescricao = new JTextField();
	txtDescricao.setBounds(63,38,300,20);
	
	txtPrecoCusto = new JTextField();
	txtPrecoCusto.setBounds(83,70,300,20);
	
	txtQtdMaxima = new JTextField();
	txtQtdMaxima.setBounds(103,120,300,20);
	
	txtQtdMinima = new JTextField();
	txtQtdMinima.setBounds(123,140,300,20);
	
	
	salvar = new JButton("Salvar");
	salvar.setBounds(1,109,100,30);
	salvar.addActionListener(new Salvar());

	
	cadastra.add(salvar);
	cadastra.add(lblCod);
	cadastra.add(lblDescricao);
	cadastra.add(txtCod);
	cadastra.add(txtDescricao);
	cadastra.add(lblPrecoCusto);
	cadastra.add(txtPrecoCusto);
	cadastra.add(lblQtdMaxima);
	cadastra.add(txtQtdMaxima);
	cadastra.add(lblQtdMinima);
	cadastra.add(txtQtdMinima);
	
	janela.setVisible(true);
}

class Salvar implements ActionListener{
	public void actionPerformed(ActionEvent e) {
		boolean verifica = true;
		if(txtCod.getText().equals("")||txtDescricao.getText().equals("")||txtPrecoCusto.getText().equals("")
                 ||txtQtdMaxima.getText().equals("")||txtQtdMinima.getText().equals("")){
			verifica = false;
		}
		
	    try {
	    	Integer.parseInt(txtCod.getText());
	    	Float.parseFloat(txtPrecoCusto.getText());
	    	Integer.parseInt(txtQtdMaxima.getText());
	    	Integer.parseInt(txtQtdMinima.getText());


	    } catch (NumberFormatException en){
	    	verifica = false;
	    }
	    
		if(verifica){
			Listagem listagem = new Listagem();
			ListagemDAO listagemDao = new ListagemDAO();
						
			listagem.setCodListagem(Integer.parseInt(txtCod.getText()));
			listagem.setDescricao(txtDescricao.getText());
			listagem.setPorcentagem(Float.parseFloat(txtPrecoCusto.getText()));
			listagem.setCodListagem(Integer.parseInt(txtQtdMaxima.getText()));
			listagem.setCodListagem(Integer.parseInt(txtQtdMinima.getText()));



			
			try {
				listagemDao.salvar(listagem);
				JOptionPane.showMessageDialog(null, "Produto salvo com sucesso");
				txtCod.setText("");
				txtDescricao.setText("");
				txtPrecoCusto.setText("");
				txtQtdMaxima.setText("");
				txtQtdMinima.setText("");


			} catch (SQLException e1) {
				JOptionPane.showMessageDialog(null, "Erro ao salvar");
				e1.printStackTrace();
			}
		}else{
			JOptionPane.showMessageDialog(null, "Preencha os campos corretamente");
		}
	}
}
		
public static void main(String[] args) {
CadastraProduto cadastra = new CadastraProduto();

cadastra.criaTelaCadastro();
}
}

Sinto muito se não estiver nas normas do FOrum, se alguem puder me orientar, editarei.

Muito obrigado desde já.

5 Respostas

Anime

Oi,

Da uma olhadinha aqui…https://javaelinux.wordpress.com/tag/java-jcombobox-listener/

R

esqueci de Mencionar, mais utilizo o Eclipse, e estou tentando aprender a criar interface atravez de codigo. Eu sei que
é mais dificil, mais é que quero aprender bem o que cada codigo faz, ou deveria fazer.

Mais Obrigado pela Ajuda. ^^

Anime

Baixe essa apostila, acho que vai gostar…http://acervobrasil.blogspot.com/2008/10/apostila-java-2-com-banco-de-dados.html

http://javainterface.wikidot.com/interfacejava

R

Vou dar uma lida nela.

Mais uma vez Obrigado pela Ajuda =]

Se eu conseguir fazer funcionar, volto para falar. Obrigado de novo

R

Sinto muito mais ainda não consegui fazer funcionar o JComboBox com banco de dados =(

Dei uma olhada na apostila, o que me ajudou a tirar algumas duvidas, mais ainda não consegui criar um funcional.

Mais uma coisa. Depois de pronta a JComboBox, como faço para que quando eu selecione uma opção nela, o programa entenda que quero que aquilo(que esta selecionado) seja armazinado de volta no banco de dados?

Não sei se foi claro, mais qualquer duvida, to aqui ^^

Obrigado a todos que leram ou ajudaram.

Criado 17 de junho de 2011
Ultima resposta 20 de jun. de 2011
Respostas 5
Participantes 2