Preciso de ajuda !
como faço para criar um jcombobox que mostre uma string para o usuario e quando ele selecionar alguma opção, o combobox retorne um valor inteiro, como o lookupcombobox do delphi ?
Obrigado
Preciso de ajuda !
como faço para criar um jcombobox que mostre uma string para o usuario e quando ele selecionar alguma opção, o combobox retorne um valor inteiro, como o lookupcombobox do delphi ?
Obrigado
Se você for estudar Swiong, verá que todos os componentes utilizam o padrão de desenvolvimento MVC, sendo assim, cada componente utiliza Models para armazenar seus dados.
O JComboBox, por padrão, implementa um Model chamado DefaultComboBoxModel, o qual não suporta armazenar um valor de exibição e um valor qualquer correspondente à escolha.
Para adicionar esta característica ao JCombox, você deve então utilizar-se de outro Model, o qual dê suporte a esta feature.
Bom, eu acho que a gente poderia ‘burlar’ isto criando um objeto do tipo:
public class ObjetoComIndice {
public String descricao;
public int indice;
public ObjetoComIndice(String d, int i) {
descricao = d;
indice = i;
}
//gets e sets
public String toString() {
return descricao;
}
}
Ai na hora de adicionar na combo, ao inves de fazer isto:
combo.add("Lucas");
combo.add("Jose");
combo.add("João");
Optamos por:
combo.add(new ObjetoComIndice("Lucas", 2));
combo.add(new ObjetoComIndice("Jose", 3));
combo.add(new ObjetoComIndice("João", 7));
Bingo. Depois na hora que resgatamos, fazemos um cast de Object para ObjetoComIndice e é só utilizar o getIndice() dele.
Resumindo tudo isso que digitei. JComboBox suporta Objetos também.
Nao podemos esquecer de sobrescrever o toString(), pois ele será chamado quando este objeto for adicionado na combo.
Valeu pessoal, vcs me ajudaram d+ ! ! ! !
Só uma última pergunta Lucas:
Tentei usar os métodos
setSelectedItem(ObjetoComIndice) e setSelectedIndex(ObjetoComIndice().getIndex())
e nenhum dos dois funcionaram !
Eu teria q fazer a seleção “no braço” usando um loop ou coisa do tipo ?
Mais uma vez, valeu pela ajuda !
este método get/setSelectedIndex() vai te retonar o index do objeto selecionado na combo, como 0 para o primeiro, 1 para o segundo, 2 para o terceiro e assim sucessivamente… o que vc tem que usar é:
indiceDoObjetoSelecionado = ((ObjetoComIndex) combo.getSelectedValue()).getIndex();
Olá,
Aproveitando o tópico de vcs, estoun tendo problemas na exibição dos dados no JCombox, tenho o seguinte código:
// Preenchendo os items do Jcombox de Estágios
EstagioDAO estagio_dao = new EstagioDAO(this.conexao);
java.util.List<Estagio> list_estagio = new java.util.ArrayList<Estagio>();
// Recebendo a Consulta do Banco de Dados
list_estagio = estagio_dao.SelectEstagio();
// Preenchendo o JComboBox
for (Estagio estagio : list_estagio){
fieldEstagio.addItem(new recuperaIndiceJCombobox(estagio.getNome(),estagio.getId()));
}
O problema é que no Jcombobox aparece no nome do objeto recuperaIndiceJCombox();
Como faço para mostrar somente a string.
Ja coloquei o toString
Valeu
Paulo