ItemListener

Pessoal, fraga só meu código:

             arrayComboBox[contCombo].addItemListener(new ItemListener() {
                            public void itemStateChanged(ItemEvent e) {
                                ComboBoxCodigoNome c = (ComboBoxCodigoNome) arrayComboBox[?].getSelectedItem();
                            }
                        });

Pois então, como podem ver, tenho um array de combo box que foi criado dinamicamente. Estou criando um ItemListener() para fazer algums settext de acordo com o combo selecionado.
O problema pessoal, é que eu não sei como pegar o ítem selecionado no meu combo, visto que não sei o índice do array.
Como resolver isso? Pensei em algo do tipo, passa na função ItemListener() um parâmetro, que seria o indice.

Obrigado

Brother, o evento já te da essa informacao = e.getItem() - Returns the item affected by the event. (by javadoc)

Tente esquecer a programacao estruturada (argumentos, parametros, funcoes, estruturas) e pense em objetos se relacionando

cara,

esse codigo abaixo nao resolve seu problema,

ComboBoxCodigoNome c = (ComboBoxCodigoNome) ((JComboBox)e.getSource()).getSelectedItem();

t+

Humm…certo pessoal!
Entendi o que disseram e testei aqui no meu sistem. Funcionou perfeitamente, consegui buscar a descrição referente ao meu combo selecionado.

Porém, sem querer abusar da boa vontade, o problema se extende um pouco, vejam.

Na verdade, eu simplesmente quero pegar o combo selecionado e informar o código referente aquela descrição em um jtextfield, o problema é que este jtextfield também esta em um array (lembrando que criei em arrays pois eles são criados dinamicamentes, eu não sei quando vai existir nem quantos).

Com isso, segue um pouco mais do meu código ok!

          arrayComboBox[contCombo].addItemListener(new ItemListener() {
                            public void itemStateChanged(ItemEvent e) {
                                ComboBoxCodigoNome c = (ComboBoxCodigoNome) e.getItem();
                                arrayTextField[?].setText(c.getCodigo());
                            }
          });

Ta vendo este arrayTextField[?], pois bem, eu agora tenho a descrição do combo com a ajuda q vocês me deram, mas agora, como vou setar o textfield com o código que eu tenho dentro do meu objeto c criado?

Oi,

Bom… teoricamente será sempre o ultimo TextField né? Se você estiver usando um modelo cascata. Logo, só pegar o .lenght();

Tchauzin!

Vc teria que ter uma co-relacao desse Item da Combo, com seus textFields.
Em vez de retornar getCodigo(), vc poderia retornar um objeto que tivesse o par codigo + nomeDoTextFieldAoQualSeraAplicadoOCodigo
Por exemplo um objeto X, no qual vc faria X.getCodigo() e X.getTextFieldName()

Entao vc percorreria seu array de textFields…

for (JTextField field: arrayTextFields) { if (field.getName().equalsIgnoreCase(x.getTextFieldName) { field.setText(x.getCodigo()); } }

Foi 1 pensamento rapido aqui, com certeza vao existir melhores solucoes…

cara,

se o seu textField estiver na mesma posição do combo selecionado nos seus respectivos arrays, basta fazer isso aqui

int posicao = 0;
		for(JComboBox combo : arrayCombo){
			if(combo == e.getSource()){
				ComboBoxCodigoNome c = (ComboBoxCodigoNome) e.getItem();
				arrayTextField[posicao].setText(c.getCodigo());
				
				break;
			}
			posicao++;
		}

t+

[quote=lina]Oi,

Bom… teoricamente será sempre o ultimo TextField né? Se você estiver usando um modelo cascata. Logo, só pegar o .lenght();

Tchauzin![/quote]

Nao, com certeza nao é isso que ele quer. Ele quer co-relacionar os codigos com os TextFields.

Pessoal, muito obrigado pela ajuda de todos.
Desobri uma forma de fazer, não sei se a melhor, mas deu certo.
Vejam só.

arrayComboBox[contCombo].addItemListener(new ItemListener() {
                            public void itemStateChanged(ItemEvent e) {
                                ComboBoxCodigoNome c = (ComboBoxCodigoNome) e.getItem();
                                arrayTextField[c.getIdCampo()].setText(c.getCodigo());
                            }
                        });

O que fiz foi criar o índice de combo box dentro do meu objeto ComboBoxCodigoNome e trazer-lo novamente em minha função listener.

Muito obrigado pela ajuda de todos…grande abraço pessoal!

[quote=fabim][quote=lina]Oi,

Bom… teoricamente será sempre o ultimo TextField né? Se você estiver usando um modelo cascata. Logo, só pegar o .lenght();

Tchauzin![/quote]

Nao, com certeza nao é isso que ele quer. Ele quer co-relacionar os codigos com os TextFields.[/quote]

Oi,

Então é só percorrer o Array de combos, achar o índice e usar o TextField.

Tchauzin!

Funciona. O unico problema é a manutencao pq manter coisas como essa que dependem de ordem especifica pra funcionar, costumam passar despercebidas.