JComboBox duvidas!

13 respostas
Z

Amigos, estou tentando carregar uma jCombobox e tenho umas duvidas.

Gostaria de saber se na jCombobox consigo adicionar 2 colunas em uma mesma linha

A primeira seria o código, e a segunda um texto.

Tambem gostaria de colocar a 1 coluna com tamanho 0, para ela ficar invisivel apr ao usuario

Existem essa possibilidade?

Por exemplo

.Additem(1,“sp”)
.Additem(2,“rj”)

Obrigado

13 Respostas

Y

O método addItem do JComboBox aceita um objeto como parâmetro.

O objeto pode ser qualquer Bean teu. O método toString do objeto é que especifica o que aparece na tela. Logo, tu podes fazer da seguinte forma:

// o teu bean com código e valor
public class Bean
  {
   private int code;
   private String value;

   public Bean(int code, String value)
     {
      this.code = code;
      this.value = value;
     }

   public String toString()
    { return (this.value); } // isso é o que vai APARECER no JComboBox
  }

Quando precisares recuperar o valor selecionado, tu recuperas novamente o objeto e chama o devido método.

Z

que complicado, terei que fazer outra classe para isso?

o jComboBox não contem colunas?

sds,

Y

Até onde sei, não tem não, e é por isso que o addItem aceita objetos, pra fazer exatamente isso que tu estás precisando.

Z

=/

Complicado…

Será que não tem a opção mesmo? Alguem saberia nos informar?

sds,

hodrigohamalho

É pelo jeito você vai ter q fazer como o Yky disse…
não tinha visto que você queria q ele ficasse invisível, ai tinha escrito outra coisa aqui :~~

lina

Oi,

A cada item inserido no JComboBox, será criado um indice automaticamente.
Então, se a sua ideia era criar uma “coluna” no combo para obter o indice (para uso futuro) não será necessário.

Você pode ter o indice de cada item, com o comando: combo.getSelectedIndex();

Tchauzin!

Z

Rodrigo, existe uma forma de fazer sem usar uma classe ??? Mesmo que o codigo ( primeira coluna ) fique “visivel”??

Y

Zabeu:
Rodrigo, existe uma forma de fazer sem usar uma classe ??? Mesmo que o codigo ( primeira coluna ) fique “visivel”??

Coloque o código e em seguida o texto. Assim:

addItem("1 - VALOR");
addItem("2 - VALOR");
addItem("3 - VALOR");
addItem("10 - VALOR");

Aí na hora que o usuário escolher uma opção, tu recuperas o valor escolhido e faz um substring pegando o início da String até o traço (menos um caractere, que é o espaço).

lina

Yky Mattshawn:
Zabeu:
Rodrigo, existe uma forma de fazer sem usar uma classe ??? Mesmo que o codigo ( primeira coluna ) fique “visivel”??

Coloque o código e em seguida o texto. Assim:

addItem("1 - VALOR");
addItem("2 - VALOR");
addItem("3 - VALOR");
addItem("10 - VALOR");

Aí na hora que o usuário escolher uma opção, tu recuperas o valor escolhido e faz um substring pegando o início da String até o traço (menos um caractere, que é o espaço).

Oi,

Eu faria no lugar deste substring um split do traço e receberia em um “vector” de string (String[]).

Tchauzin!

Y

lina:
Yky Mattshawn:
Zabeu:
Rodrigo, existe uma forma de fazer sem usar uma classe ??? Mesmo que o codigo ( primeira coluna ) fique “visivel”??

Coloque o código e em seguida o texto. Assim:

addItem("1 - VALOR");
addItem("2 - VALOR");
addItem("3 - VALOR");
addItem("10 - VALOR");

Aí na hora que o usuário escolher uma opção, tu recuperas o valor escolhido e faz um substring pegando o início da String até o traço (menos um caractere, que é o espaço).

Oi,

Eu faria no lugar deste substring um split do traço e receberia em um “vector” de string (String[]).

Tchauzin!

Bom, no ‘eu faria’, eu certamente optaria por criar o Bean e recuperar o objeto corretamente.

Entretanto, nestas circunstâncias, eu ainda preferiria usar o substring, pois, este, criaria apenas 1 String contendo exatamente o valor de que eu precisaria (o código).

Se usar um Split pelo traço, criarás ao todo 3 objetos String. Dois objetos pelo próprio split, e mais um objeto quando utilizasse o trim no valor para retirar o espaço existente entre o código e o traço.

Z

o método do Objeto é menos “porco” diriamos?

lina

Yky Mattshawn:
lina:
Yky Mattshawn:
Zabeu:
Rodrigo, existe uma forma de fazer sem usar uma classe ??? Mesmo que o codigo ( primeira coluna ) fique “visivel”??

Coloque o código e em seguida o texto. Assim:

addItem("1 - VALOR");
addItem("2 - VALOR");
addItem("3 - VALOR");
addItem("10 - VALOR");

Aí na hora que o usuário escolher uma opção, tu recuperas o valor escolhido e faz um substring pegando o início da String até o traço (menos um caractere, que é o espaço).

Oi,

Eu faria no lugar deste substring um split do traço e receberia em um “vector” de string (String[]).

Tchauzin!

Bom, no ‘eu faria’, eu certamente optaria por criar o Bean e recuperar o objeto corretamente.

Entretanto, nestas circunstâncias, eu ainda preferiria usar o substring, pois, este, criaria apenas 1 String contendo exatamente o valor de que eu precisaria (o código).

Se usar um Split pelo traço, criarás ao todo 3 objetos String. Dois objetos pelo próprio split, e mais um objeto quando utilizasse o trim no valor para retirar o espaço existente entre o código e o traço.

Oi,

Eu não disse que o Bean seria melhor ou pior opção, apenas falei que no lugar de substring eu usaria o split. Provavelmente ele não quer apenas o indice para manipular e sim os 2 conteudos do combo, para utiliza-lo em uma base de dados ou então indicar que o indice 1 é igual ao valor etc… etc… porém, estou apenas imaginando isso!

As 3 formas ditas são boas, basta escolher… O bom do java é isso, você tem opção para criar seus proprios componentes e sobreescrever métodos conforme a sua necessidade.

Tchauzin!

ViniGodoy

Uma forma simples de criar classes para isso é através de um enum.

Criado 15 de julho de 2009
Ultima resposta 15 de jul. de 2009
Respostas 13
Participantes 5