Salvar estado do aplicativo

8 respostas
A

Pessoal, alguém sabe uma forma simples de salvar o estado de um aplicativo swing? Tenho um programa que apresenta várias barras de ferramentas, as pessoas poderão personalizar de acordo com a vontade delas, são jcomboboxes que estarão selecionadas ou não, e ao iniciar o programa o estado será carregado.

eu nunca fiz algo do tipo, mas eu estou pensando se teria como fazer isso escrevendo em um arquivo externo e então lendo-o quando eu entrar novamente no programa. Estou tentando desenvolver aqui, mas se alguém tiver um exemplo ou algum lugar para indicar para estudo eu agradeço. Já vi o exemplo do javafree, mas não entendi nada de lá. ^^

8 Respostas

Anime

Oi,

Não entendi,de que estado vc está falando?Estado de SP,por ex? :oops:

ganondorfan

Serialize seus objetos personalizáveis. :wink:
Pense nisso como guardar um objeto java em arquivo para posterior resgate.

A

Anime, seria deixar os objetos no estado em que estão, exemplo:

tenho um menu que contém submenus de seleção, que no caso são JComboBox. Se uma JComboBox estava selecionada ao “desligar” o programa, então ao iniciar novamente o programa, ela deverá estar marcada, caso contrário, faça o mesmo, salve o estado dos itens.

ganondorfan, não entendi, como assim serializar? Estou ainda aprendendo os conceitos mas não sei o de serialização.

Alexandre_Saudate

Use a API de preferências: http://download.oracle.com/javase/1.4.2/docs/guide/lang/preferences.html

EDIT: Achei também este link: http://www.cesar.org.br/files/file/cesar-preferences-api_doc.pdf. Me parece ser o próprio artigo que saiu na Java Magazine um tempo atrás.

[]´s

ganondorfan

andre.froes:
Anime, seria deixar os objetos no estado em que estão, exemplo:

tenho um menu que contém submenus de seleção, que no caso são JComboBox. Se uma JComboBox estava selecionada ao “desligar” o programa, então ao iniciar novamente o programa, ela deverá estar marcada, caso contrário, faça o mesmo, salve o estado dos itens.

ganondorfan, não entendi, como assim serializar? Estou ainda aprendendo os conceitos mas não sei o de serialização.

Serializar é salvar os atributos de um objeto em arquivo, para isso basta implementar a interface Serializable, funciona tipo um savestate, se você tiver poucos objetos os quais deseja guardar o estado isso pode ser uma boa alternativa.

Anime

Não sei se é isso que vc quer…

Vc tem um JComboBox,então deve declarar uma variavel de controle:

int inicia_combo=0;//variável para controlar o combo


  private void cb_pesquisaActionPerformed(java.awt.event.ActionEvent evt) {                                            
     if(inicia_combo==1)//aq está a variável,iniciando com valor 1
     {
        try
      {
          conecta_cidade.resultset.first();
          String igual="n";
          int tamanho_pesquisa=tf_pesquisar.getText().length();
          while (igual=="n")
          {
          
                 if(conecta_cidade.resultset.getString("nome").equals(cb_pesquisa.getSelectedItem()))
                 {
                 igual="s";
                }
                 else 
                 conecta_cidade.resultset.next();
                }
             tf_codcid.setText(conecta_cidade.resultset.getString("codigo"));
        
             mostrar_dados();
            
      }
          catch(Exception erro)
          {
            JOptionPane.showMessageDialog(null,"Não conseguiu localizar "); 
          }
     }
               inicia_combo=1;//no final tb com valor 1

    }

Espero ter ajudado…

Alexandre_Saudate

Anime:
Não sei se é isso que vc quer…

Vc tem um JComboBox,então deve declarar uma variavel de controle:

int inicia_combo=0;


  private void cb_pesquisaActionPerformed(java.awt.event.ActionEvent evt) {                                            
     if(inicia_combo==1)
     {
        try
      {

          //Não é uma boa idéia acessar uma conexão de BD num controlador Swing (procure no Google por MVC).
          conecta_cidade.resultset.first(); //onde esse resultset é fechado?
          String igual="n";
          int tamanho_pesquisa=tf_pesquisar.getText().length();
          while (igual=="n") //Evite fazer comparações entre String usando "==", prefira equals()
          {
          

                 if(conecta_cidade.resultset.getString("nome").equals(cb_pesquisa.getSelectedItem()))
                 {
                 igual="s";
                }
                 else 
                 conecta_cidade.resultset.next();
                }
             tf_codcid.setText(conecta_cidade.resultset.getString("codigo"));
        
             mostrar_dados(); 
            
      }
          catch(Exception erro)
          {
            JOptionPane.showMessageDialog(null,"Não conseguiu localizar "); 
          }
     }
               inicia_combo=1;

    }

Espero ter ajudado…

Anime, coloquei algumas considerações no seu código, OK?

[]´s

Anime

Ok… :wink:

Criado 20 de setembro de 2010
Ultima resposta 20 de set. de 2010
Respostas 8
Participantes 4