[Duvida] jTable para arquivo .txt

3 respostas
PedroPauloPrudente

Bom Dia Javeiros,

Estou com um problema gigante, eu precisso salvar minha jTable(suas informações ou seu conteudo) e depois quando quiser abri-lá e continuar a edita-la ou a inserir linhas da onde eu parei quando salvei essa tabela.

segue abaixo meu metodo que adiciona linha por linha:
/**
* Minha View é composta por 14 jCombobox e 1 textArea, onde as 14 jcombo me retorna do banco de dados os valores a serem inseridos em uma linha
* eu tb pego o valor da textArea e adiciono tb na minha tabela.
* Minha tabela chama-se jTListarCT
**/

String[] meuArray;              

          meuArray = new String[14];

          meuArray[0] = String.valueOf(jCBCT_Turno.getSelectedItem()); // turno
          meuArray[1] = String.valueOf(jCBCT_Amb.getSelectedItem()); // ambiente
          meuArray[2] = String.valueOf(jCBCT_Disc.getSelectedItem()); // disciplina
          meuArray[3] = String.valueOf(jCBCT_DiscEtapa.getSelectedItem()); // etapa
          meuArray[4] = String.valueOf(jCBCT_DiscCod.getSelectedItem()); // codigo da disciplina
          meuArray[5] = String.valueOf(jCBCT_DiscCH.getSelectedItem()); // carga horaria
          meuArray[6] = String.valueOf(jCBCT_DiscDiaSemana.getSelectedItem()); // dia da semana
          meuArray[7] = String.valueOf(jCBCT_DiscHoraInicio.getSelectedItem()); // hora inicio
          meuArray[8] = String.valueOf(jCBCT_DiscHoraTermino.getSelectedItem()); // hora termino
          meuArray[9] = String.valueOf(jCBCT_Prof.getSelectedItem()); // professor
          meuArray[10] = String.valueOf(jCBCT_DiscDataInicio.getSelectedItem()); // data inicio
          meuArray[11] = String.valueOf(jCBCT_DiscDataTermino.getSelectedItem()); // data termino
          meuArray[12] = String.valueOf(jCBCT_Coord.getSelectedItem()); // coord
          meuArray[13] = String.valueOf(jTAObs.getText()); // obs


        //ADICIONA AS LINHAS - OBJETO
        javax.swing.table.DefaultTableModel dtm = (javax.swing.table.DefaultTableModel)jTListarCT.getModel();
        dtm.addRow(meuArray);

Eu gostaria de pegar o valor de todas as linhas adicionadas na tabela e salvar e depois abri-la,
ex:
Eu adicionei 5 linhas mais tive que salvar e sair, quando eu voltar quero poder continuar de onde parei.

Pessoal por favor me ajudem estou dessesperado com isso é a unica coisa que falta fazer para terminar meu TCC... help please!!! :oops:

3 Respostas

Nicolas_Fernandes

Olá, Pedro!
Tudo bem?

Cara… Podemos fazer o seguinte…

Primeiro, ESQUEÇA O DEFAULTTABLEMODEL!
Faça um AbstractTableModel para a sua JTable, onde você trabalhará diretamente com os objetos.

Suponhamos que você tenha um POJO assim:

public class Usuario() {
   
   private long id;
   private String usuario;
   private String senha;

   // Getters e Setters omitidos para facilitar a visualização.
}

Beleza…
Faça um TableModel baseado na seu POJO:

public class UsuariosTableModel extends AbstractTableModel {

   // Sua ArrayList, para controle dos dados.
   private List<Usuario> usuarios = new ArrayList<Usuario>();

   // Receba por construtor seus dados.
   public UsuariosTableModel( List<Usuario> usuarios ) { this.usuarios = usuarios; }

  // ---------------------------------------------------------------------------------------------
  // Todos os métodos a serem sobrescritos e criados por você podem ser encontrados nos posts do ViniGodoi!
  // ---------------------------------------------------------------------------------------------

  // Crie um método que retorne os dados da sua JTable.
  public List<Usuario> retornarUsuarios() { return this.usuarios; }
}

Beleza…
Temos aí um controle fácil dos seus dados da JTable.
Você pode criar um pacote Utils, por exemplo, e adicionar uma classe Exportacões, adicionando nessa classe os métodos de exportacão de dados!

public class Exportacoes {

   public void exportarUsuarios( List<Usuario> usuarios, String pathArquivo ) throws Exception {
   
      // Aqui, você trabalhará com o arquivo .txt e exportará os dados dele!
      // Suponhamos que você adote o padrão de arquivo: "ID, USUÁRIO, SENHA;":
      
      for ( Usuario usuario : usuarios ) {

         String linhaArquivo = usuario.getId().toUpperCase() + "," +
                                         usuario.getUsuario().toUpperCase() + "," +
                                         usuario.getSenha().toUpperCase() + ";";
         
          // Aqui, métodos para abrir, escrever e fechar seu arquivo.
      }
   }

   // Pode-se seguir vários métodos para exportar vários outros dados aqui!
}

Legal… Sabemos como exportar os dados!
Podemos também criar uma classe para importar seus dados!

public class Importacoes {

   public List<Usuario> importarUsuarios( String pathArquivo ) throws Exception {
   
      // Segue o mesmo modelo de cima, só que para importação!
   }
}

Foi útil meu post?
Espero ter ajudado!

[]s

PedroPauloPrudente

Caro Nicolas, irei testar aqui e depois te falo se deu certo, mas flw mesmo pela rapidez na qual vc me respondeu, vlw mesmo!!! :smiley:

ViniGodoy

Concordo 100% com o Nicolas. Dá até uma olhada na minha assinatura…

Criado 26 de abril de 2010
Ultima resposta 26 de abr. de 2010
Respostas 3
Participantes 3