Duvida atualizacao interface

6 respostas
renanbarros

pessoal … to precisando fazer com q minha combo seja atualizada depois de um cadastro.

Ex.:
existe uma combo com palavras , porem se a palavra que o usuario quer nao estiver la… ele vai clicar no botao para cadastrar nova palavra… essa palavra vai pro banco e do banco eu gero um xml q é lido e que carrega essa combo.

Só que preciso que esta combo seja atualizada assim q a janela de cadastro da nova palvra seja fechada…

estou usando um JinternalFrame…

alguem pode me ajudar?

6 Respostas

getAndSet

olá amigo
passe a referencia do combo e quando a janela for
fechada carregue o combo novamente ou somente
adicione a nova palavra

qualquer duvida post
ate mais!!!

ramilani12

Utilize a classe WindowListener , implemente ela no seu InternalFrame

http://java.sun.com/j2se/1.4.2/docs/api/java/awt/event/WindowListener.html

Utilize o método :

public void windowClosed(WindowEvent e)
{
atualizar combo()
}
P

Eu estou tendo um problema parecido.

Eu tenho um mmétodo que popula o meu combo.

Crio uma variavel do tipo combo, e chamando minha função, retorno um combo populado corretamente, ao qual faço minha variavel do tipo combo ser igual a esse retorno (ai que a variável é inicializada).

Quando abro essa janela complementar (que deveria repopular o combo) passo o combo a minha janela anterior (onde está o combo) por referência.

Quando termino a execução da minha janela complementar, tento chamar novamente a função que popula o combo (prgo a variável da minha janela principal, que desta vez ja está inicializada, e igualo novamente ao retorno do método), porém, não funciona, o combo não se altera.

Eu estou utilizando essa técnica de adicionar o novo elemento ao banco e ao mesmo tempo adicioná-lo ao combo, ai funciona, mas fica fora de ordem, ja que só consigo adicionar um elemento ao fim do combo.

Se puderem me dar dicas ficaria muito grato

Abraços

getAndSet

post o codigo pra gente poder
ajudar
ate mais

renanbarros

Na verdade tenho duas duvidas. :

Eu gero essa combo de um xml , certo . Só que quero colocar numa lista abaixo os itens que eu selecionei nessa minha combo .

Eu fiz desta maneira :

listModel.addElement((PalavraChave)cbPalavraChaveImagem.getSelectedItem());
        listaPalavrasChave.setModel(listModel);

onde listaPalavrasChave é a minha lista na tela.

O problema é o seguinte :

Como minha combo é gerada pelo xml , o primeiro item da combo ja esta sendo passado para a minha lista , mesmo sem eu seleciona-lo.

O segundo problema é: Dessa combo que eu gerei , eu quero pegar o codigo e a descricao de cada palvra para inserir na lista.

Embora nao queira mostrar o codigo , mas apenas a descricao , tenho q passar o codigo e a descricao porque posteriormente estarei inserindo estes codigos numa tabela associativa de arquivos-palavras

P

Eu estou sem o código completo aqui, mas é assim:

public class TelaPrincipal extends JFrame 
//implementa os listeners que preciso com implements...
{
  /*
   *Defino diversas variáveis, como JButtons, JPanels, JLabels etc...
  */
  public JComboBox combo;

  /*
   *No construtot mesmo, minha janela é criada
  */
  public TelaPrincipal()
  {
     /*
      *Defino as variáveis, como botao = new JButton("texto"); e etc...
     */

     combo = this.populaCombo();

     /*
      *Aqui continuo a criar a janela e mostro ela
     */
  }

  //varios métodos que tratam os eventos

  public JComboBox populaCombo ()
  {
     JComboBox auxiliar;
     /*
      *Acesso o banco, guardo os resultados em um resultset,
      *colocos esses resultados em um array X, e ordena X
     */
     auxiliar = new JComboBox(X);

     return auxiliar
  }
}

Esse trecho funciona, o combo aparece populado certinho.

O problema é quando atualizo no banco a tabela que popula o combo na janela auxiliar

No mesmo esquema que a tela principal, crio uma classe que extends JFrame, crio as variaveis dela e mostro ela.
Nessa tela, cadastro novos itens na lista que popula o combo da janela principal.
Essa nova janela recebe como parametro a janela anterior (na janela principal, quando chamo a nova janela, passo um this como argumento).
Nessa nova janela existe um botao salvar, que registra o novo item no banco, atualiza o combo da janela anterior e ja fecha a janela, voltando o foco para a janela anterior.
Abaixo coloquei o trecho que trata o evento do botão salvar.

//o nome do método é o que trata ActionListener
{
  //trata a inserção no BD
  /*
   *a janela anterior está em uma variável chamada ant
   */
  ant.combo = ant.populaCombo();
  this.dispose();
}

Assim não funciona, o combo não muda…
Mas do jeito que coloco depois, funciona:

//o nome do método é o que trata ActionListener
{
  //trata a inserção no BD
  /*
   *a janela anterior está em uma variável chamada ant
   */
  ant.combo.addElement(elemento);
  /*
   *se não me engano é assim o nome do método que adiciona um    
   *elemento no combo. elemento é o mesmo que adicionei no BD
  */
  this.dispose();
}

Desse último jeito funciona, porém, o elemento que adicionei fica no final do combo, deixando os elementos fora de ordem.

Se puderem me ajudar…

Valew

Criado 29 de janeiro de 2007
Ultima resposta 29 de jan. de 2007
Respostas 6
Participantes 4