Pessoal estou acostumado a trabalhar com interfaces web partindo pro swing estou com a seguinte dúvida:
Em um campo select o valor que aquele campo retorna pode ser diferente do valor que é exibido na lista. Existe alguma forma de fazer o mesmo no jcombobox?
Exemplo:
Seleciono o sexo Masculino no jComboBox mas na verdade ele retornar M quando pedir o valor?
você quer que no combo apareça: Masculino, mas no getSelectedItem retorno apenas M?
Vc vai ter q criar um ItemRenderer para pode colocar mais de um objeto dentro de um jcombobox
import javax.swing.JList;
import javax.swing.plaf.basic.BasicComboBoxRenderer;
/**
*
* @author cristiano.modesto.ex
*/
public class ItemRenderer extends BasicComboBoxRenderer {
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
if (value != null) {
Item item = (Item) value;
setText(item.getDescription().toUpperCase());
}
return this;
}
}
/**
*
* @author cristiano.modesto.ex
*/
public class Item {
private String id;
private String description;
private Object obj;
public Item(String id, String description,Object obj) {
this.id = id;
this.description = description;
this.obj = obj;
}
public Object getObject(){
return obj;
}
public String getId() {
return id;
}
public String getDescription() {
return description;
}
public String toString() {
return description;
}
}
jComboBox1.removeAllItems();
jComboBox1.updateUI();
Iterator iter = lista.listIterator();
jComboBox1.addItem(new Item("1", "XXXX", null);
Object obj = new Object();
while (iter.hasNext()) {
obj = (Objeto) iter.next();
String id = Integer.toString(obj.getProductId());
String nome = obj.getProductname();
jComboBox1.addItem(new Item(id, nome,obj));
}
jComboBox1.setSelectedIndex(0);
jComboBox1.updateUI();
para colocar mais de um itme no com é muito simples:
o problema é você pegar apenas o M, você vai cair no memso dilema que eu tive com combobox, segue o tópico que tem um exemplo de classe que o Vini me passou, porém comigo não funcionou:
http://www.guj.com.br/java/274461-arraylist-classe-de-objetos-ou-whiles-do-resultset
O Item Render ja resolve isso…so aparece o “Masculino” por exemplo no combobox…o ID fica escondido dentro de um objeto qualquer q vc queira ou em uma string como coloquei no exemplo…