JComboBox preenchido com Resultado de SQL

Boa Noite,

Tenho o seguinte problema:

-Tenho uma classe Produtos e uma classe UnidadesMedida, a classe produtos tem uma chave estrangeira para a unidadesmedida.

Preciso fazer o seguinte, preenche um JComboBox do Formulário da Produtos com os valores do SQL da UnidadeMedida e quando selecionar o item no JComboBox preciso gravar no banco de dados na tabela dos produtos o índice da tabela de UnidadesMedia.

Segue abaixo:

  • Classe Dao Unidades medida

package edu.asselvi.cadastro;

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

import edu.asselvi.bancofidelizar.InstrucoesSQL;

public class CadastroUnidadesMedidaDao extends InstrucoesSQL {

protected CadastroUnidadesMedidaDao() throws SQLException {
	super();
	// TODO Auto-generated constructor stub
}

public void salvar(CadastroUnidadesMedida unidadesmedida)
		throws SQLException {
	String insert = "INSERT INTO UNIDADE_MEDIDA (descricao, descricao_reduz, fracionario) VALUES (?,?,?)";
	insert(insert, unidadesmedida.getDescricao(),
			unidadesmedida.getDescricaoReduz(),
			unidadesmedida.getFracionario());
}

public void alterar(CadastroUnidadesMedida unidadesmedida)
		throws SQLException {
	String update = "UPDATE UNIDADE_MEDIDA"
			+ "SET DESCRICAO = ?, DESCRICAO_REDUZ = ?, FRANCIONARIO = ?"
			+ "WHERE CODIGO = ?";
	update(update, unidadesmedida.getCodigo(),
			unidadesmedida.getDescricao(),
			unidadesmedida.getDescricaoReduz(),
			unidadesmedida.getFracionario());
}

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

public List<CadastroUnidadesMedida> findUnidadesMedida()
		throws SQLException {
	List<CadastroUnidadesMedida> unidadesmedida = new ArrayList<CadastroUnidadesMedida>();

	String select = "SELECT * FROM UNIDADE_MEDIDA";

	PreparedStatement stmt = getConnection().prepareStatement(select);

	ResultSet rs = stmt.executeQuery();

	while (rs.next()) {
		CadastroUnidadesMedida cadastrounidadesmedida = new CadastroUnidadesMedida();
		cadastrounidadesmedida.setCodigo(rs.getLong("codigo"));
		cadastrounidadesmedida.setDescricao(rs.getString("descricao"));
		cadastrounidadesmedida.setDescricaoReduz(rs
				.getString("descricao_reduz"));
		cadastrounidadesmedida.setFracionario(rs.getString("fracionario"));
		unidadesmedida.add(cadastrounidadesmedida);

	}
	rs.close();
	stmt.close();

	return unidadesmedida;
}

public CadastroUnidadesMedida findByDescricao(String descricao)
		throws SQLException {
	String select = "SELECT * FROM UNIDADE_MEDIDA WHERE DESCRICAO LIKE ?";
	CadastroUnidadesMedida cadastrounidadesmedida = null;
	PreparedStatement stmt = getConnection().prepareStatement(select);

	stmt.setString(1, descricao);
	ResultSet rs = stmt.executeQuery();

	while (rs.next()) {
		cadastrounidadesmedida = new CadastroUnidadesMedida();
		cadastrounidadesmedida.setCodigo(rs.getLong("codigo"));
		cadastrounidadesmedida.setDescricao(rs.getString("descricao"));
		cadastrounidadesmedida.setDescricaoReduz(rs
				.getString("descricao_reduz"));
		cadastrounidadesmedida.setFracionario(rs.getString("fracionario"));
	}

	rs.close();
	stmt.close();
	return cadastrounidadesmedida;
}

}

Classe Controller UnidadesMedida:

package edu.asselvi.cadastro;

import java.sql.SQLException;
import java.text.ParseException;
import java.util.List;

import javax.swing.JOptionPane;

public class CadastroUnidadesMedidaController {
public void salvar(String descricao, String descricao_reduz,
String fracionario) throws SQLException, ParseException {
CadastroUnidadesMedida cadastrounidadesmedida = new CadastroUnidadesMedida();
cadastrounidadesmedida.setDescricao(descricao);
cadastrounidadesmedida.setDescricaoReduz(descricao_reduz);
cadastrounidadesmedida.setFracionario(fracionario);
new CadastroUnidadesMedidaDao().salvar(cadastrounidadesmedida);
}

public void alterar(Long codigo, String descricao, String descricao_reduz,
		String fracionario) throws SQLException, ParseException {
	CadastroUnidadesMedida cadastrounidadesmedida = new CadastroUnidadesMedida();
	cadastrounidadesmedida.setCodigo(codigo);
	cadastrounidadesmedida.setDescricao(descricao);
	cadastrounidadesmedida.setDescricaoReduz(descricao_reduz);
	cadastrounidadesmedida.setFracionario(fracionario);

	new CadastroUnidadesMedidaDao().salvar(cadastrounidadesmedida);
}

public List<CadastroUnidadesMedida> listaunidadesmedida() {
	CadastroUnidadesMedidaDao dao = null;
	try {
		dao = new CadastroUnidadesMedidaDao();
	} catch (SQLException e1) {
		// TODO Auto-generated catch block
		e1.printStackTrace();
	}
	try {
		return dao.findUnidadesMedida();
	} catch (SQLException e) {
		JOptionPane.showMessageDialog(
				null,
				"Problemas ao localizar Unidade de Medida"
						+ e.getLocalizedMessage());
	}
	return null;
}

public void excluir(long codigo) throws SQLException {
	new CadastroUnidadesMedidaDao().excluir(codigo);
}

public CadastroUnidadesMedida buscaUMPorNome(String descricao)
		throws SQLException {
	CadastroUnidadesMedidaDao dao = new CadastroUnidadesMedidaDao();
	return dao.findByDescricao(descricao);
}

}

Classe UnidadesMedida:

package edu.asselvi.cadastro;

public class CadastroUnidadesMedida {
private Long codigo;
private String descricao;
private String descricao_reduz;
private String fracionario;

public Long getCodigo() {
	return codigo;
}

public void setCodigo(Long codigo) {
	this.codigo = codigo;
}

public String getDescricao() {
	return descricao;
}

public void setDescricao(String descricao) {
	this.descricao = descricao;
}

public String getDescricaoReduz() {
	return descricao_reduz;
}

public void setDescricaoReduz(String descricao_reduz) {
	this.descricao_reduz = descricao_reduz;
}

public String getFracionario() {
	return fracionario;
}

public void setFracionario(String fracionario) {
	this.fracionario = fracionario;
}

}

FrmCadastroUnidadesMedida:

package edu.asselvi.cadastro;

import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import java.text.ParseException;
import java.util.List;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

import edu.asselvi.validacao.ValidacaoTamanhoJTextField;

public class FrmCadastroUnidadesMedida extends JDialog {

/**
 * 
 */
private static final long serialVersionUID = 1L;
private JLabel lbCodigo, lbDescricao, lbDescricaoReduzida, lbEx;
private JTextField txtCodigo, txtDescricao, txtDescricaoReduz,
		txtLocalizar;
private JCheckBox chkFracionario;
private JButton btnSalvar, btnAlterar, btnExcluir, btnClear, btnLocalizar;
private JButton btnPrimeiro, btnProximo, btnAnterior, btnUltimo;

private List<CadastroUnidadesMedida> unidadesmedidaList = new CadastroUnidadesMedidaController()
		.listaunidadesmedida();

private int registroAtual = 0;

public FrmCadastroUnidadesMedida() {
	setTitle("Fidelizar - Fidelização de Clientes - Cadastro de Unidades de Medida");// Definição
	// do
	// título
	// da janela

	// define componente de icone para a aplicacao
	ImageIcon imagemTituloJanela = new ImageIcon("img/logo.jpg");
	setIconImage(imagemTituloJanela.getImage());
	
	getContentPane().setBackground(Color.WHITE);

	// centralizacao e tamanho da tela
	setSize(480, 340);
	setLocationRelativeTo(null);
	setModal(true);

	Container tela = getContentPane();

	lbCodigo = new JLabel("Código");
	lbDescricao = new JLabel("Descrição");
	lbDescricaoReduzida = new JLabel("Descrição Reduzida");
	lbEx = new JLabel("");

	lbCodigo.setBounds(20, 20, 240, 15);
	lbDescricao.setBounds(200, 20, 240, 15);
	lbDescricaoReduzida.setBounds(20, 80, 240, 15);

	lbCodigo.setForeground(Color.BLACK);
	lbDescricao.setForeground(Color.BLACK);
	lbDescricaoReduzida.setForeground(Color.BLACK);

	lbCodigo.setFont(new Font("Courier New", Font.BOLD, 14));
	lbDescricao.setFont(new Font("Courier New", Font.BOLD, 14));
	lbDescricaoReduzida.setFont(new Font("Courier New", Font.BOLD, 14));

	tela.add(lbCodigo);
	tela.add(lbDescricao);
	tela.add(lbDescricaoReduzida);

	chkFracionario = new JCheckBox("É Fracionário?");

	chkFracionario.setBounds(200, 100, 240, 15);

	chkFracionario.setForeground(Color.BLACK);

	chkFracionario.setFont(new Font("Courier New", Font.BOLD, 14));

	tela.add(chkFracionario);

	txtCodigo = new JTextField();
	txtDescricao = new JTextField();
	txtDescricaoReduz = new JTextField();

	txtCodigo.setBounds(20, 40, 120, 25);
	txtDescricao.setBounds(200, 40, 240, 25);
	txtDescricaoReduz.setBounds(20, 100, 120, 25);

	txtCodigo.setEditable(false);

	txtDescricao.setDocument(new ValidacaoTamanhoJTextField(20));
	txtDescricaoReduz.setDocument(new ValidacaoTamanhoJTextField(3));

	tela.add(txtCodigo);
	tela.add(txtDescricao);
	tela.add(txtDescricaoReduz);

	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(95, 240, 80, 30);
	btnAlterar.setBounds(190, 240, 80, 30);
	btnExcluir.setBounds(285, 240, 80, 30);

	tela.add(btnSalvar);
	tela.add(btnAlterar);
	tela.add(btnExcluir);

	btnPrimeiro.setBounds(90, 150, 50, 20);
	btnAnterior.setBounds(140, 150, 50, 20);
	btnClear.setBounds(190, 150, 75, 20);
	btnProximo.setBounds(265, 150, 50, 20);
	btnUltimo.setBounds(315, 150, 50, 20);

	tela.add(btnPrimeiro);
	tela.add(btnAnterior);
	tela.add(btnClear);
	tela.add(btnProximo);
	tela.add(btnUltimo);

	JLabel lbLocalizar = new JLabel("Pesquisar por Descrição:");
	lbLocalizar.setBounds(20, 180, 220, 25);

	txtLocalizar = new JTextField();
	txtLocalizar.setBounds(20, 200, 240, 25);

	btnLocalizar = new JButton("Pesquisa");
	btnLocalizar.setBounds(270, 200, 90, 25);

	tela.add(lbLocalizar);
	tela.add(txtLocalizar);
	tela.add(btnLocalizar);

	tela.add(lbEx);

	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 = unidadesmedidaList.size() - 1;
	getValores(registroAtual);
}

private void onClickProximo() {
	if (registroAtual != unidadesmedidaList.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 <= unidadesmedidaList.size() - 1) {
		CadastroUnidadesMedida UMAtual = unidadesmedidaList.get(index);
		txtDescricao.setText(UMAtual.getDescricao());
		txtCodigo.setText(UMAtual.getCodigo().toString());
		txtDescricaoReduz.setText(UMAtual.getDescricaoReduz());
		if (UMAtual.getFracionario().toUpperCase().equals("S")) {
			chkFracionario.setSelected(true);
			// System.out.println(UMAtual.getFracionario());
		} else {
			chkFracionario.setSelected(false);
			// System.out.println(UMAtual.getFracionario());
		}
	}
}

private void onClickAlterar() {
	CadastroUnidadesMedidaController cc = new CadastroUnidadesMedidaController();
	long codigo = unidadesmedidaList.get(registroAtual).getCodigo();
	try {
		cc.alterar(codigo, txtDescricao.getText(),
				txtDescricaoReduz.getText(),
				chkFracionario.isSelected() == true ? "S" : "N");
		JOptionPane.showMessageDialog(this,
				"Unidade de Medida alterada com sucesso!");
		//clearFields();
		unidadesmedidaList = new CadastroUnidadesMedidaController()
				.listaunidadesmedida();
	} catch (SQLException e) {
		JOptionPane.showMessageDialog(
				this,
				"Não foi possivel alterar Unidade de Medida!n"
						+ e.getLocalizedMessage());
	} catch (ParseException e) {
		JOptionPane.showMessageDialog(this, "Existem dados inválidos!"
				+ " " + e.getLocalizedMessage());
	}
}

private void onClickSalvar() {
	CadastroUnidadesMedidaController cc = new CadastroUnidadesMedidaController();
	try {
		cc.salvar(txtDescricao.getText(), txtDescricaoReduz.getText(),
				chkFracionario.isSelected() == true ? "S" : "N");
		JOptionPane.showMessageDialog(this,
				"Unidade de Medida salva com sucesso!");
		clearFields();
		onClickLocalizar();
		unidadesmedidaList = new CadastroUnidadesMedidaController()
				.listaunidadesmedida();
	} catch (SQLException e) {
		JOptionPane.showMessageDialog(
				this,
				"Nao foi possivel salvar a Unidade de Medida!" + " "
						+ e.getLocalizedMessage());
	} catch (ParseException e) {
		JOptionPane.showMessageDialog(
				this,
				"Unidade de Medida possui dados inválidos!" + " "
						+ e.getLocalizedMessage());
	}
}

private void onClickExcluir() {
	CadastroUnidadesMedidaController cc = new CadastroUnidadesMedidaController();
	System.out.println(txtCodigo.getText());
	Long codigo = Long.valueOf(txtCodigo.getText());
	try {
		cc.excluir(codigo);
		JOptionPane.showMessageDialog(this,
				"Unidade de Medida excluída com sucesso!");
		clearFields();
		unidadesmedidaList = new CadastroUnidadesMedidaController()
				.listaunidadesmedida();
	} catch (SQLException e) {
		JOptionPane.showMessageDialog(
				this,
				"Nao foi possivel excluir a unidade de medida!" + " "
						+ e.getLocalizedMessage());
	}
}

private void onClickLocalizar() {
	CadastroUnidadesMedidaController cc = new CadastroUnidadesMedidaController();
	try {
		CadastroUnidadesMedida c = cc.buscaUMPorNome("%"
				+ txtLocalizar.getText() + "%");
		txtDescricao.setText(c.getDescricao());
		txtCodigo.setText(c.getCodigo().toString());
		txtDescricaoReduz.setText(c.getDescricaoReduz());
		// System.out.println(c.getFracionario());
		if (c.getFracionario().toUpperCase().equals("S")) {
			chkFracionario.setSelected(true);
		} else {
			chkFracionario.setSelected(false);
		}
		;

		// Long Codigo = (c.getCodigo());
	} catch (SQLException e) {
		JOptionPane.showMessageDialog(
				this,
				"Ocorreu um erro, tente novamente!" + " "
						+ e.getLocalizedMessage());
	} catch (NullPointerException e) {
		JOptionPane.showMessageDialog(this,
				"Unidade de Medida não localizada ou não existe!" + " "
		// + e.getLocalizedMessage()
				);
	}
}

private void clearFields() {
	txtDescricao.setText("");
	txtCodigo.setText("");
	txtDescricaoReduz.setText("");
	chkFracionario.setSelected(false);
}

public static void main(String args[]) {
	new FrmCadastroUnidadesMedida().setVisible(true);
}

}

Dao Produtos:

package edu.asselvi.cadastro;

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

import edu.asselvi.bancofidelizar.InstrucoesSQL;

public class CadastroProdutosDao extends InstrucoesSQL {

protected CadastroProdutosDao() throws SQLException {
	super();
	// TODO Auto-generated constructor stub
}

public void salvar(CadastroProdutos produtos) throws SQLException {
	String insert = "INSERT INTO PRODUTO (descricao, cod_unidademedida, ativa) VALUES (?,?,?)";
	insert(insert, produtos.getDescricao(), produtos.getCodUnidadeMedida(),
			produtos.getAtivo());
}

public void alterar(CadastroProdutos produtos) throws SQLException {
	String update = "UPDATE PRODUTO "
			+ "SET DESCRICAO = ?, COD_UNIDADEMEDIDA = ?, ATIVA = ?"
			+ "WHERE CODIGO = ?";
	update(update, produtos.getCodigo(), produtos.getDescricao(),
			produtos.getCodUnidadeMedida(), produtos.getAtivo());
}

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

public List<CadastroProdutos> findProdutos() throws SQLException {
	List<CadastroProdutos> produtos = new ArrayList<CadastroProdutos>();

	String select = "SELECT * FROM PRODUTO";

	PreparedStatement stmt = getConnection().prepareStatement(select);

	ResultSet rs = stmt.executeQuery();

	while (rs.next()) {
		CadastroProdutos cadastroproduto = new CadastroProdutos();
		cadastroproduto.setCodigo(rs.getLong("codigo"));
		cadastroproduto.setDescricao(rs.getString("descricao"));
		cadastroproduto
				.setCodUnidadeMedida(rs.getLong("cod_unidademedida"));
		cadastroproduto.setAtiva(rs.getString("ativa"));
		produtos.add(cadastroproduto);

	}
	rs.close();
	stmt.close();

	return produtos;
}

public CadastroProdutos findByDescricao(String descricao)
		throws SQLException {
	String select = "SELECT * FROM PRODUTO WHERE DESCRICAO LIKE ?";
	CadastroProdutos cadastroprodutos = null;
	PreparedStatement stmt = getConnection().prepareStatement(select);

	stmt.setString(1, descricao);
	ResultSet rs = stmt.executeQuery();

	while (rs.next()) {
		cadastroprodutos = new CadastroProdutos();
		cadastroprodutos.setCodigo(rs.getLong("codigo"));
		cadastroprodutos.setDescricao(rs.getString("descricao"));
		cadastroprodutos.setCodUnidadeMedida(rs
				.getLong("cod_unidademedida"));
		cadastroprodutos.setAtiva(rs.getString("ativa"));
	}

	rs.close();
	stmt.close();
	return cadastroprodutos;
}

}

Controller Produtos:

package edu.asselvi.cadastro;

import java.sql.SQLException;
import java.text.ParseException;
import java.util.List;

import javax.swing.JOptionPane;

public class CadastroProdutosController {
public void salvar(String descricao, Long codunidademedida, String ativa)
throws SQLException, ParseException {
CadastroProdutos cadastroprodutos = new CadastroProdutos();
cadastroprodutos.setDescricao(descricao);
cadastroprodutos.setCodUnidadeMedida(codunidademedida);
cadastroprodutos.setAtiva(ativa);

	new CadastroProdutosDao().salvar(cadastroprodutos);
}

public void alterar(Long codigo, String descricao, Long codunidademedida,
		String ativa) throws SQLException, ParseException {
	CadastroProdutos cadastroprodutos = new CadastroProdutos();
	cadastroprodutos.setCodigo(codigo);
	cadastroprodutos.setDescricao(descricao);
	cadastroprodutos.setCodUnidadeMedida(codunidademedida);
	cadastroprodutos.setAtiva(ativa);

	new CadastroProdutosDao().alterar(cadastroprodutos);
}

public List<CadastroProdutos> listaprodutos() {
	CadastroProdutosDao dao = null;
	try {
		dao = new CadastroProdutosDao();
	} catch (SQLException e1) {
		// TODO Auto-generated catch block
		e1.printStackTrace();
	}
	try {
		return dao.findProdutos();
	} catch (SQLException e) {
		JOptionPane.showMessageDialog(null,
				"Problemas ao localizar produto" + e.getLocalizedMessage());
	}
	return null;
}

public void excluir(long codigo) throws SQLException {
	new CadastroProdutosDao().excluir(codigo);
}

public CadastroProdutos buscaProdutosPorDescricao(String descricao)
		throws SQLException {
	CadastroProdutosDao dao = new CadastroProdutosDao();
	return dao.findByDescricao(descricao);
}

}

Classe Produtos:

package edu.asselvi.cadastro;

public class CadastroProdutos {
private Long codigo;
private String descricao;
private Long codunidademedida;
private String ativa;

public Long getCodigo() {
	return codigo;
}

public void setCodigo(Long codigo) {
	this.codigo = codigo;
}

public String getDescricao() {
	return descricao;
}

public void setDescricao(String descricao) {
	this.descricao = descricao;
}

public Long getCodUnidadeMedida() {
	return codunidademedida;
}

public void setCodUnidadeMedida(Long codunidademedida) {
	this.codunidademedida = codunidademedida;
}

public String getAtivo() {
	return ativa;
}

public void setAtiva(String ativa) {
	this.ativa = ativa;
}

}

FrmCadastroProdutos:

package edu.asselvi.cadastro;

import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import java.text.ParseException;
import java.util.List;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

import edu.asselvi.validacao.ValidacaoTamanhoJTextField;

public class FrmCadastroProdutos extends JDialog {
/**
*
*/
private static final long serialVersionUID = 1L;

private JLabel lbCodigo, lbDescricao, lbUnidadeMedida, lbEx;
private JTextField txtCodigo, txtDescricao, txtLocalizar;
private JCheckBox chkAtivo;
private JComboBox comboUnidadeMedida;
private JButton btnSalvar, btnAlterar, btnExcluir, btnClear, btnLocalizar;
private JButton btnPrimeiro, btnProximo, btnAnterior, btnUltimo;

private List<CadastroProdutos> produtosList = new CadastroProdutosController()
		.listaprodutos();

private int registroAtual = 0;

public FrmCadastroProdutos() {

	setTitle("Fidelizar - Fidelização de Clientes - Cadastro de Produtos");// Definição
	// do
	// título
	// da janela

	// define componente de icone para a aplicacao
	ImageIcon imagemTituloJanela = new ImageIcon("img/logo.jpg");
	setIconImage(imagemTituloJanela.getImage());

	getContentPane().setBackground(Color.WHITE);

	// centralizacao e tamanho da tela
	setSize(480, 360);
	setLocationRelativeTo(null);
	setModal(true);

	Container tela = getContentPane();

	lbCodigo = new JLabel("Código");
	lbDescricao = new JLabel("Descricao");
	lbUnidadeMedida = new JLabel("Unidade de Medida");
	lbEx = new JLabel("");

	lbCodigo.setBounds(20, 20, 240, 15);
	lbDescricao.setBounds(200, 20, 240, 15);
	lbUnidadeMedida.setBounds(20, 80, 240, 15);

	lbCodigo.setForeground(Color.BLACK);
	lbDescricao.setForeground(Color.BLACK);
	lbUnidadeMedida.setForeground(Color.BLACK);

	lbCodigo.setFont(new Font("Courier New", Font.BOLD, 14));
	lbDescricao.setFont(new Font("Courier New", Font.BOLD, 14));
	lbUnidadeMedida.setFont(new Font("Courier New", Font.BOLD, 14));

	tela.add(lbCodigo);
	tela.add(lbDescricao);
	tela.add(lbUnidadeMedida);

	chkAtivo = new JCheckBox("Ativo");

	chkAtivo.setBounds(250, 100, 190, 15);

	chkAtivo.setForeground(Color.BLACK);

	chkAtivo.setFont(new Font("Courier New", Font.BOLD, 14));

	tela.add(chkAtivo);

	txtCodigo = new JTextField();
	txtDescricao = new JTextField();

	txtCodigo.setBounds(20, 40, 120, 25);
	txtDescricao.setBounds(200, 40, 240, 25);

	txtCodigo.setEditable(false);

	txtDescricao.setDocument(new ValidacaoTamanhoJTextField(45));

	tela.add(txtCodigo);
	tela.add(txtDescricao);

	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(95, 280, 80, 30);
	btnAlterar.setBounds(190, 280, 80, 30);
	btnExcluir.setBounds(285, 280, 80, 30);

	tela.add(btnSalvar);
	tela.add(btnAlterar);
	tela.add(btnExcluir);

	btnPrimeiro.setBounds(90, 200, 50, 20);
	btnAnterior.setBounds(140, 200, 50, 20);
	btnClear.setBounds(190, 200, 75, 20);
	btnProximo.setBounds(265, 200, 50, 20);
	btnUltimo.setBounds(315, 200, 50, 20);

	tela.add(btnPrimeiro);
	tela.add(btnAnterior);
	tela.add(btnClear);
	tela.add(btnProximo);
	tela.add(btnUltimo);

	JLabel lbLocalizar = new JLabel("Pesquisar por Descrição:");
	lbLocalizar.setBounds(20, 225, 220, 25);

	txtLocalizar = new JTextField();
	txtLocalizar.setBounds(20, 245, 240, 25);

	btnLocalizar = new JButton("Pesquisa");
	btnLocalizar.setBounds(270, 245, 90, 25);

	tela.add(lbLocalizar);
	tela.add(txtLocalizar);
	tela.add(btnLocalizar);

	/*
	 * CadastroUnidadesMedidaController cc = new
	 * CadastroUnidadesMedidaController(); try { CadastroUnidadesMedida c =
	 * cc.buscaUMPorNome("%" + "%");
	 * comboUnidadeMedida.addItem(c.getDescricao()); } catch (SQLException
	 * e) { JOptionPane.showMessageDialog( this,
	 * "Ocorreu um erro, tente novamente!" + " " + e.getLocalizedMessage());
	 * ;
	 */

	tela.add(lbEx);

	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 = produtosList.size() - 1;
	getValores(registroAtual);
}

private void onClickProximo() {
	if (registroAtual != produtosList.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 <= produtosList.size() - 1) {
		CadastroProdutos produtoAtual = produtosList.get(index);
		txtDescricao.setText(produtoAtual.getDescricao());
		txtCodigo.setText(produtoAtual.getCodigo().toString());
		if (produtoAtual.getAtivo().toUpperCase().equals("S")) {
			chkAtivo.setSelected(true);
			// System.out.println(UMAtual.getFracionario());
		} else {
			chkAtivo.setSelected(false);
			// System.out.println(UMAtual.getFracionario());
		}
	}
}

private void onClickAlterar() {
	CadastroProdutosController cc = new CadastroProdutosController();
	long codigo = produtosList.get(registroAtual).getCodigo();
	try {
		cc.alterar(codigo, txtDescricao.getText(), (long) 1,
				chkAtivo.isSelected() == true ? "S" : "N");
		JOptionPane
				.showMessageDialog(this, "Produto alterado com sucesso!");
		// clearFields();
		produtosList = new CadastroProdutosController().listaprodutos();
	} catch (SQLException e) {
		JOptionPane.showMessageDialog(
				this,
				"Não foi possivel alterar Produto!n"
						+ e.getLocalizedMessage());
	} catch (ParseException e) {
		JOptionPane.showMessageDialog(this, "Existem dados inválidos!"
				+ " " + e.getLocalizedMessage());
	}
}

private void onClickSalvar() {
	CadastroProdutosController cc = new CadastroProdutosController();
	try {
		cc.salvar(txtDescricao.getText(), (long) 1,
				chkAtivo.isSelected() == true ? "S" : "N");
		JOptionPane.showMessageDialog(this, "Produto salvo com sucesso!");
		clearFields();
		onClickLocalizar();
		produtosList = new CadastroProdutosController().listaprodutos();
	} catch (SQLException e) {
		JOptionPane.showMessageDialog(
				this,
				"Nao foi possivel salvar Produto!" + " "
						+ e.getLocalizedMessage());
	} catch (ParseException e) {
		JOptionPane.showMessageDialog(
				this,
				"Produto possui dados inválidos!" + " "
						+ e.getLocalizedMessage());
	}
}

private void onClickExcluir() {
	CadastroProdutosController cc = new CadastroProdutosController();
	System.out.println(txtCodigo.getText());
	Long codigo = Long.valueOf(txtCodigo.getText());
	try {
		cc.excluir(codigo);
		JOptionPane
				.showMessageDialog(this, "Produto excluido com sucesso!");
		clearFields();
		produtosList = new CadastroProdutosController().listaprodutos();
	} catch (SQLException e) {
		JOptionPane.showMessageDialog(
				this,
				"Nao foi possivel excluir o produto!" + " "
						+ e.getLocalizedMessage());
	}
}

private void onClickLocalizar() {
	CadastroProdutosController cc = new CadastroProdutosController();
	try {
		CadastroProdutos c = cc.buscaProdutosPorDescricao("%"
				+ txtLocalizar.getText() + "%");
		txtDescricao.setText(c.getDescricao());
		txtCodigo.setText(c.getCodigo().toString());
		if (c.getAtivo().toUpperCase().equals("S")) {
			chkAtivo.setSelected(true);
		} else {
			chkAtivo.setSelected(false);
		}
	} catch (SQLException e) {
		JOptionPane.showMessageDialog(
				this,
				"Ocorreu um erro, tente novamente!" + " "
						+ e.getLocalizedMessage());
	} catch (NullPointerException e) {
		JOptionPane.showMessageDialog(this,
				"Produto não localizado ou não existe!" + " "
		// + e.getLocalizedMessage()
				);
	}
}

private void clearFields() {
	txtDescricao.setText("");
	txtCodigo.setText("");
	chkAtivo.setSelected(false);
}

public static void main(String args[]) {
	new FrmCadastroProdutos().setVisible(true);
}

}

Pessoal sou iniciante em java e desde já agradeço a atenção de quem puder ajudar.

thomazdede. Não entendi qual sua dúvida. É com relação a programação Java ou SQL?

Boa noite,

Você ainda tem esta dúvida, porque não entendi a mesma.

OBS. Quando for digitar seu código aqui, coloque-o dentro dos códigos: [ code ] … [ /code ]

Olá, sua dúvida é simples de resolver …
Provavelmente você está passando no seu método de INSERT uma variável tipo int ou long ( Números ), mesmo que seu box esteja sendo preenchido com valores STRING basta que antes da inserção no banco você faça uma consulta onde peça o valor do índice referente a unidade de medida que você quer no banco e atribua o resultado do índice que você quer nela.

E no seu construtor ou como esteja fazendo a inserção você passa o a variável criada que está com o valor do índice carregado.

ok. Esse tópico é antigo, caso já tenha resolvido coloque no tema [RESOLVIDO] ok?

Forte abraço.