Evento para alterar valor do JComboBox a partir de um JTextField

8 respostas
O

A dúvida é a seguinte, um evento para disparar quando um texto for inserido no Text-Field,
no meu caso, o combo-box é carregado com os dados do banco no open-windows assim que o formulário é aberto,
dai tenho um campo código que corresponde aos valores do combo-box, dai preciso fazer a ligação tipo; se o código carregado for 2 ele vai no combo-box e seleciona o item correspondente.

no formulário para inserir eu fiz o seguinte:
private void funcaoActionPerformed(java.awt.event.ActionEvent evt) { //evento                                      
       if (funcao.isPopupVisible()){ //se o valor do checkbox for selecionado
       Funcao carregando;//Class modelo
      
        ArrayList<Funcao> resultado;
        int i;
        String troca , nome1 = "";
        ControleCurriculum controle = new ControleCurriculum();  
        resultado = controle.buscarFuncao(nome1);
        i = funcao.getSelectedIndex() ;
        carregando  = resultado.get(i);
        troca = "";
         troca = troca + carregando.getCod();//guardando o valor do código

         
       codFuncao.setText(troca);//exibindo o código
}
    }

8 Respostas

S

Você pode colocar o código da mudança do combobox na onfocuslost da textfield..
Ou pode colocar esse código quando o usuário apertar enter, após preencher a textfield

txt.addKeyListener(new KeyListener() {
				public void keyTyped(KeyEvent arg0) {
				}
                               @Override
				public void keyReleased(KeyEvent arg0) {
					if (arg0.getKeyCode() != KeyEvent.VK_ENTER) {
                                                 trocarCombobox();
					}
				}

				@Override
				public void keyPressed(KeyEvent arg0) {

				}
			});
        	txt.addFocusListener(new FocusListener() {
				public void focusLost(FocusEvent arg0) {
					trocarCombobox();
				}

				public void focusGained(FocusEvent arg0) {
					
				}
			});
private void trocarCombobox(){
combobox.setselecteditem(txt.getText().toString());
}

Sua dúvida era essa mesmo?

O

obrigado pela atenção sapaos, olha com o onfocuslost não daria certo, porque, não é na parte de inserção que to trabalhando e sim no retorno das informações do banco; então meu campo código vai ser preenchido pelo banco de dados e quando isso acontecer quero que ele pegue o valor de outra tabela do banco que tem o nome desse código para ser colocado em um combobox… fico no aguardo…

S

Então você deve ter um metodo que preenche o campo, certo?
após isso tu chama o método trocarCombobox() que falei antes

exemplo…

txt.setText(id + "");
trocarCombobox();

:smiley:

O
Seguinte, consegui chegar até aqui>>
private void codFuncaoFocusLost(java.awt.event.FocusEvent evt) {                                    
     Funcao funcaoo;
      
     ArrayList<Funcao>resultado;
      String troca , nome1 = "";
      int i;
      
     ControleCurriculum controle = new ControleCurriculum();
     
     resultado = controle.buscarFuncao(nome1); //carrega os nomes
   
        i = Integer.parseInt(codFuncao.getText()); //captura o código preenchido   
        funcaoo  = resultado.get(i);
        troca = "";
         troca = troca + funcaoo.getFuncao();

       funcao.setSelectedItem(troca);//setando o valor no COMBOBOX
     }

O problema é esse erro:
Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 8, Size: 3
esse Index: 8 é a posição do array que eu to montando com o código,
e o tamanho 3 é pq só tem 3 itens no array, dai não sei como corrigir o erro mim ajudem ai,

ele ta rodando, agora com Index < Size.

Ajuda aew pessoal, vlww

O

Galera só quero saber como pode ser incrementado o algoritmo para que quando o text field for alterado o JComboBox também seja alterado… :idea:

S

Desculpa a demora cara, to com uns problemas com internet no serviço…

parece que o erro esta aqui

i = Integer.parseInt(codFuncao.getText()); //captura o código preenchido funcaoo = resultado.get(i);

só daria certo se a combobox funcao tivesse os mesmo valores da do array resultado…

tenta verificar isso… ;D
qualquer coisa posta aqui

O

o problema é esse, eu não to conseguindo pensar como comparar, porque o meu combobox é carregado com Strings que vem do BD, de uma tabela, e quando o formulario é aberto o evento (open windows) do formulário carrega o textfield que é o “codFuncao”, dai tenho que fazer o sincronismo. exemplo: a tabela que carrega o combobox possui funcao que é o que uso para carregar o combo, e tem o codFuncao correspondente a funcao, só que eu não uso o codFuncao da tabela funcao, e sim o codFuncao de outra tabela que faz referencia a tabela de funções, dai essa outra tabela é que vai carregar meu campo codFuncao… quando for carregado eu quero que ele selecione o correspondente na combobox de acordo o codFuncao; ai finalizando tenho: um TextField que tem que selecionar um combobox,

textfield = Int;
combobox = String;

S

realmente ficou meio confuso… tenta postar seu código completo…
Não to entendendo direito a relação do seu banco e da sua tela…
posta o código de tudo e dou uma olhada…

Criado 5 de dezembro de 2012
Ultima resposta 14 de dez. de 2012
Respostas 8
Participantes 2