ComboBox

5 respostas
S

Pessoal,

Depois de um dia e meio tentando resolver um problema sem sucesso, recorro a esse maravilhoso forum.
Pesquisei no forum, assuntos correlatos, mas também não consegui resolver meu problema.

Estou tentando fazer um comboBox com as informacoes do campos id e name.
Quero que o usuário visualize apenas o campo name, porém a informacao que é gravada no BD é o campo id.
Esta situação vai ocorrer em diversas ocasiões, como por exemplo, na tabela pedidos, ficam gravados
apenas o id do vendedor, o id da transportadora, etc.

Quando o campo id do vendedor, por exemplo, já está preenchido na tabela de pedidos, ao carregar o frame,
sempre é o primeiro registro da lista do combobox é que é exibido. Não consigo fazer com que o combobox
exiba o registro correspondente ao id que está registrado no BD.

Vejam meu código: (só coloquei as linhas principais):

OrderMestre orderMestre = new OrderMestre();

	orderMestre.setTransports_id(rs.getInt(b++));


	// povoa o combobox
	ArrayList list = new ArrayList();
	String sqlTrans = "select transports_id,transports_name from transports";
	try {
		rs = conn.executeQuery(sqlTrans);
	} catch (Exception e) {
		e.printStackTrace();
	}
	GetInfoCombo trans;
	while (rs.next()) {
		trans = new GetInfoCombo();  
		trans.setId(rs.getInt(1));
		trans.setName(rs.getString(2));
		list.add(trans);
	}

No model tenho o seguinte código:

public void setSelectedItemLista(Object item) {   
        this.selectedItem = item;   
        index = list.indexOf(item);   
        if (comboBox != null) {   
            comboBox.setSelectedIndex(index);   
            comboBox.repaint();   
        }   
        this.fireChangeNotification();   
    }   
  
    public void setSelectedItem(Object item) {   
        this.selectedItem = item;   
        index = list.indexOf(item);   
        this.fireChangeNotification();   
    }

O que está errado?

5 Respostas

S

Faltou as linhas que definem o combobox, inclusive setSelectedItem

JComboBox combotrans = new JComboBox();
	CommonComboModel modeloComboBoxClientes = new CommonComboModel(list);
	combotrans.setModel(modeloComboBoxClientes);   
	combotrans.setSelectedItem(orderMestre.getTransports_id());

	public void setSelectedItemLista(Object item)
j0nny

Vc pode usar HashMap (talvez tenha uma solução melhor).
Então vc popula ele com o primeiro paramtro sendo o id, e o outro o nome desejado.

Consulte aqui…
http://java.sun.com/j2se/1.4.2/docs/api/java/util/HashMap.html

S

Quer dizer então que a forma que estou utilizando não tem solução sem o uso do HashMap?

Hebertbc

para ‘bahianagens’ assim geralmente uso BeansBinding

j0nny

serkitchen:

Quer dizer então que a forma que estou utilizando não tem solução sem o uso do HashMap?

Ou outra solução.
Crie uma classe que estende de JComboBox e crie nela mais um atributo ‘id’ com os gets/sets. :lol:

Criado 11 de março de 2010
Ultima resposta 11 de mar. de 2010
Respostas 5
Participantes 3