bom dia pessoal , estou com um problema com um ComboBox que recebe um Vetor(que tem valores armazenados de uma consulta ao BD) atraves de um ComboBoxModel… não da erro nenhum como NullPointerException ,mas não esta mostrando valor nenhum dentro do comboBox… 
public Vector<String> clientesEmVetor(){
Vector<String> vetor = new Vector<String>();
try {
Statement st = conexao.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM clientes");
if(rs.first()){
while(rs.next()){
vetor.add(rs.getString(1));// 1 é a coluna com o nome dos meus clientes
}
}
}catch (SQLException e) {
e.printStackTrace();
}
return vetor;
}
aqui eu armazeno o resultado do "select " em uma Vector, e retorno ele para futuramente passar para o construtor ComboBoxModel…
public class ComboBoxModelClientes extends DefaultComboBoxModel{
private Vector<String> vetor;
public ComboBoxModelClientes(){
}
public ComboBoxModelClientes(Vector vetor) {
this.vetor = vetor;
}
}
aqui é o construtor do ComboBoxModel…
public class Programas {
public Vector<String> getVetorClientes(){
return vetor;
}
}
aqui a minha classe programas, para o vetor ser atualizado ja no inicio do programa…
cbmClientes = new ComboBoxModelClientes(meuPrograma.getVetorClientes()); //comboBoxModel
cbCliente = new JComboBox();//comboBox
cbCliente.setModel(cbmClientes);
aqui eu construo meu comboBox…mas na hora de mostrar na tela, ao invés de mostrar o nome dos clientes mostra vazio… :?
ajuda ai galera…abraço!
Daniel,
Tem como vc colocar onde que vc tá chamando o método ClientesEmVector() do teu BD e carregando isso no Objeto?
Não ficou muito claro onde que vc tá chamndo esse método
[]'s
blz cara vo coloca o codigo completo de onde ele é chamado!
public class Programas {
Interfaces menu;
Map<Integer,Clientes> listaClientes;
Map<Integer,Produtos> listaProdutos;
Map<Integer,Pedidos> listaPedidos;
Vector<String> vetor;
DaoCliente daoCliente;
DaoProduto daoProduto;
DaoPedido daoPedido;
Connection conexao;
public Programas(){
menu = new UIMenu(this);
this.criaConexao();
this.daoCliente = new DaoCliente(conexao);
this.daoProduto = new DaoProduto(conexao);
this.daoPedido = new DaoPedido(conexao);
listaClientes = daoCliente.buscaTodosClientes();
listaProdutos = daoProduto.buscaTodosProdutos();
listaPedidos = daoPedido.buscaTodosPedidos();
vetor = daoCliente.clientesEmVetor();
}
public void criaConexao() {
if (conexao == null){
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
conexao =
DriverManager.getConnection("jdbc:mysql://localhost/Loja?user=root&password=root");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args){
Programas meuPrograma = new Programas();
meuPrograma.resolvaProblema();
}
private void resolvaProblema() {
menu.setVisible(true);
}
protected void finalize() throws Throwable {
super.finalize();
conexao.close();
}
public void adicionaCliente(Clientes cli){
listaClientes.put(cli.getCodCliente(), cli);
daoCliente.insert(cli);
}
public void adicionaProduto(Produtos prod){
listaProdutos.put(prod.getCodProduto(), prod);
daoProduto.insert(prod);
}
public void adicionaPedido(Pedidos pedido){
listaPedidos.put(pedido.getCodPedido(), pedido);
daoPedido.insert(pedido);
}
public Map <Integer,Clientes> getListaClientes(){
return listaClientes;
}
public Map <Integer,Produtos> getListaProdutos(){
return listaProdutos;
}
public Map <Integer,Pedidos> getListaPedidos(){
return listaPedidos;
}
public Vector<String> getVetorClientes(){// aqui ta ele :D
return vetor;
}
}
public class UIRelatorios extends Interfaces {
private static UIRelatorios tela;
private JLabel lbTipo_relat;
private JButton btnRelatorio;
private JComboBox cbCliente;
private ComboBoxModelClientes cbmClientes;
private DaoCliente daoCliente;
public UIRelatorios(Programas programa) {
super(programa, "Relatorios");
this.getContentPane().setLayout(null);
this.setSize(new Dimension(600, 400));
lbTipo_relat = new JLabel("Escolha o Cliente:");
lbTipo_relat.setBounds(new Rectangle(15, 30, 109, 21));
this.getContentPane().add(lbTipo_relat, null);
cbmClientes = new ComboBoxModelClientes(meuPrograma.getVetorClientes());//aqui chamo o metodo para passar os valores para o model e depois para o combo box ;)
cbCliente = new JComboBox();
cbCliente.setModel(cbmClientes);
cbCliente.setBounds(new Rectangle(150, 30, 200,25));
this.getContentPane().add(cbCliente, null);
btnRelatorio = new JButton("Gerar Relatorio");
btnRelatorio.setBounds(new Rectangle(370, 30, 150, 30));
this.getContentPane().add(btnRelatorio, null);
btnRelatorio.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
JOptionPane.showMessageDialog(null,"OPÇÃO INVÁLIDA PARA A VERSÃO DE AVALIAÇÃO!\n" +
"IFORMÇÕES DE COMPRA: (47)91984900");
}
});
}
public static UIRelatorios getInstance(Programas programa) {
if(tela == null){
tela= new UIRelatorios(programa);
}
return tela;
}
}
espero que agora dê!
abraço!
Cara pelo o que eu vi tá acontecendo é o seguinte
Vc Tah usando uma classe ComboBoxModelClientes que extende a DefaultComboBoxModel.
Mas vc tá usando isso para que? se vc pode instanciar a DefaultComboBoxModel passando como parâmetro o vector que vc recuperou??
Experimenta trocar por essa classe.
Dica: se vc extendeu tem que saber quais métodos são chamados para vc sobrescrever. no caso vc criou o construtor e mais nenhum método. Dá uma olhada nos métodos que essa classe tem no javaDoc. http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/DefaultComboBoxModel.html
[]'s
AHHH…espero que isso possa Ajudar!
pelo jeito era isso mesmo véio!
agora deu certinho… !
obrigadão! 