Nesse post iremos preencher um JComboBox com objetos, para isso vamos precisar de uma java.util.List.
Para exemplo vamos usar uma categoria. Então... precisamos de uma classe chamada Categoria.java
public class Categoria { private int codigo; private String nome; public int getCodigo() { return codigo; } public void setCodigo(int codigo) { this.codigo = codigo; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } @Override public String toString() { return this.nome; } }
Perceba que o método toString() foi sobreescrito, isso é necessário para que ao mostrar os objetos no JComboBox, apareça o nome da categoria como referência no combo... para entender a importância disso, faça um teste: retire o método toString() e veja o resultado!
Continuando...
Crie um Formulário JFrame com o nome de ExemploCombo.java, e arraste para a tela, um JComboBox (cmbCategoria) e um JButton (btnEnviar) para testarmos.
No código-fonte crie um método carregaCombo(), com o seguinte código:
private void carregaCombo(){ //assim como é feito numa JTable, temos o DefaultComboBoxModel que é o model do JComboBox DefaultComboBoxModel comboModel = (DefaultComboBoxModel) cmbCategoria.getModel(); //removendo todos os elementos do combo comboModel.removeAllElements(); //cria a lista: java.util.List List<Categoria> categorias = new ArrayList<Categoria>(); //adicionando valores aleatorios a lista Categoria c1 = new Categoria(); c1.setCodigo(1); c1.setNome("Compra"); categorias.add(c1); Categoria c2 = new Categoria(); c2.setCodigo(2); c2.setNome("Venda"); categorias.add(c2); //percorrendo a lista para inserir os valores no combo for (int linha = 0; linha < categorias.size(); linha++) { //pegando a categoria da lista Categoria categoria = categorias.get(linha); //adicionando a categoria no combo comboModel.addElement(categoria); } }Os comentários no código explicam o que acontece em cada linha.
Agora é necessário chamar este método no construtor da classe, logo depois de iniciar os componentes:
public ExemploCombo() { initComponents(); carregaCombo(); }
E para pegar o valor, vamos utilizar o evento do btnEnviar, para isso dê dois cliques no botão para abrir o evento:
private void btnEnviarActionPerformed(java.awt.event.ActionEvent evt) { //pegando o objeto selecionado no combo Categoria categoria = (Categoria) cmbCategoria.getSelectedItem(); //mostrando o nome da categoria em um dialogo JOptionPane.showMessageDialog(this, categoria.getNome()); }
Para setar um objeto por padrão em um combo, segue o exemplo:
cmbCategoria.setSelectedItem(categoria);Essa categoria que está sendo passada por parâmetro, seria uma categoria por exemplo pega de uma lista, ou de um outro objeto que possua uma categoria.
=)
Muito bom!
ResponderExcluirEra tudo o que eu precisava.
Parabéns pelo blog.
;)
Obrigada...
ResponderExcluirFico feliz em poder ajudar! :D
Andréia, você também me deu uma grande ajuda, obrigado!
ResponderExcluirQue bom Jonathas :)
ExcluirÓtimo post.
ResponderExcluirTiver alguns problemas ao executar o código. Seria possível você me fornecer as classes desse exemplo, incluindo a do JFrame e a Main?
Obrigado.
Obs: Esqueci de colocar o meu Email. erik_thrash@hotmail.com
ExcluirGrato.
Olá Eric, infelizmente não tenho mais esse código a um tempo.
ResponderExcluirOk.
ExcluirMuito obrigado mesmo assim.
gostei, valeu!!
ResponderExcluirSalvou a minha vida
ResponderExcluirtop, otimo , me ajudou muito.
ResponderExcluir