JComboBox

5 respostas
velo

Opa pessoal…

Eu estou querendo criar uma comboBox meio diferente e não sei como.

Imaginem que eu tenho uma combo box com 5 opções dentro.
E na mesma tela essa ComboBox aparece 3 vezes. Gostaria de fazer com que as opções já selecionadas desapareçam da comboBox, tem como fazer isso?

VELO

5 Respostas

danieldestro

claro que tem como.
só dá uma pensada direito como vc faz essas verificações ai.

velo

Eu toh meio perdido de como fazer isso pq o numero de JComboBox não eh fixo.

Hora pode ser uma só, hora, podem ter + de 5… :frowning:

danieldestro

Então crie uma classe que apenas faz esse controle, independente do número de combos criados.

velo

Opa daniel,

Eu consegui fazer ± o que eu queria.

2 problemas.

1º - Não sei como readicionar um item a lista quando eu deseleciono ele.
2º - Eu gostaria que o item seleciona desaparecesse das outra Combo Box, mas que continuasse visivel na atual. Se tem ideia?!

VELO

danieldestro

Cara, tudo depende da maneira como vc está implementando isso. É questão de lógica.

Porque vc não faz algo +- assim:

public class ComboboxItensController {
  private List itens;
  private List itensSelecionados = new ArrayList();
  private List combos = new ArrayList();

  public ComboboxItensController( List itens ) {
    this.itens = itens;
  }

  public void addCombobox( JComboBox o ) {
    combos.add( o );
  }

  public void itemSelecionado( JComboBox o, Object i ) {
    itensSelecionados.add( i );
     //aqui manda exibir o objeto "i" no combo "o".
  }

  private void montarCombos() {
    Iterator it = combos.iterator();
    while( it.hasnext() ) {
      montarItensCombo( (JComboBox) it.next() );
    }
  }

  private void montarItensCombo( JComboBox o ) {
    Iterator it = itens.iterator();
    while( it.hasNext() ) {
      Object o = it.next();
      if( !itensSelecionados.contains( o ) ) {
        // manda exibir no combo, seja diretamente
        // ou seja via um combo model
      }
    }
  }
}

Não está completo, mas a idéia é mais ou menos essa.

Criado 25 de novembro de 2004
Ultima resposta 26 de nov. de 2004
Respostas 5
Participantes 2