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
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.
A janela deverá ficar como a imagem abaixo:
No código-fonte crie um método carregaCombo(), com o seguinte código:
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:
E para pegar o valor, vamos utilizar o evento do btnEnviar, para isso dê dois cliques no botão para abrir o evento:
Para setar um objeto por padrão em um combo, segue o exemplo:
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.
=)
Para exemplo vamos usar uma categoria. Então... precisamos de uma classe chamada Categoria.java
Código:
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; } }
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.
A janela deverá ficar como a imagem abaixo:
No código-fonte crie um método carregaCombo(), com o seguinte código:
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); } }
Agora é necessário chamar este método no construtor da classe, logo depois de iniciar os componentes:
Código:
public ExemploCombo() { initComponents(); carregaCombo(); }
Código:
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()); }
Código:
cmbCategoria.setSelectedItem(categoria);
=)