guardar valores desde tabla en archivo txt

Iniciado por greenselves, 19 Diciembre 2009, 21:08 PM

0 Miembros y 1 Visitante están viendo este tema.

Leyer

 :o bueno bueno si ese es tu metodo para agregar datos a la tabla esta "SUPER MAL" :-X
1-Donde estas agregando la tabla o mejor fijate dond la estas creando
2-Solo estas mandando a mostrar los valores de la fila 1
3.como le agregas datos a la tabla si no estas usando DefaultTableModel o AbstractTableModel en tu tabla
4.el objeto valor es nulo en tu caso yo te coloque el ejemplo pero el valor a guardar tiene que ser la concatenacion de los valores de la fila que quieres guardar
5.tabla.close?? deberias renombrar essa variable da mala impresion :xD

Saludos.

greenselves

En realidad la tabla ya esta hecha, el codigo por netbeans...
lo que yo keria era despues de poner los datos en la tabla (que ya esta creada)
pusharle al boton agregar, donde se guardan los contactos y sus informacion.
Se guardaran en un  archivo txt
Greenselves

egyware

Cita de: greenselves en 20 Diciembre 2009, 05:47 AM
cha!!
tuve un error al copiar y pegar en la ultima respuesta je
aqui esta, y ya puedo "agregar".
Tengo un error  en la parte de:

tabla.close();




    @Action
    public void Agregar() {


       
JTable tabla ;
tabla = new JTable();


// CODIGO ESCRITURA
try
{
       
int columna;

for(columna=0; columna<tabla.getColumnCount(); columna++)
{

System.out.println(tabla.getValueAt(1, columna)); // fila 1   columna

}   // ciclo for         



Object valor;
valor = new Object();
// Declarando variable valor



BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("prueba.txt"));
bufferedWriter.append("Fila 1:  "+valor);// método de writter java, regresa la escritura
bufferedWriter.newLine(); // escribe una línea separadora
bufferedWriter.flush();//salida de flujo
bufferedWriter.close();// cierra flujo

// Bufers de escritura de string en el archivo

tabla.close();
// cierra el flujo de datos en archivo
} // try


catch (Exception e) {
System.err.println("Error " +e);
} // catch


} //  clase agregar

Recien me vengo enterando de este tema gracias a L-EYER
y tratare de ayudar en algo, primero para entrar al tema arreglando ese codigo feo
Código (java) [Seleccionar]


//Primero esto no existe, por lo menos no tienes declarado antes y no se sabe que es realmente
//tabla.close(); //No va




@Action
public void Agregar() {

/*hare la suposición que la tabla existe y esto es solo para demostrar que es tabla una JTable*/       
JTable tabla ;
tabla = new JTable();


// CODIGO ESCRITURA
try{
       
  int columna;

  for(columna=0; columna<tabla.getColumnCount(); columna++) { 
      /*Como alguien ya menciono antes muestras el valor(a la salida estandar) de 1 sola columna y de la segunda si no me equivoco (el cero tambien cuenta)*/
      System.out.println(tabla.getValueAt(1, columna)); // fila 1   columna
  }   // ciclo for         


//Para algo servira seguire revisando
Object valor;
valor = new Object();
// Declarando variable valor



BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("prueba.txt"));
//aca valor que valor tiene? un valor cualquiera
bufferedWriter.append("Fila 1:  "+valor);// método de writter java, regresa la escritura
bufferedWriter.newLine(); // escribe una línea separadora
bufferedWriter.flush();//salida de flujo
bufferedWriter.close();// cierra flujo

// Bufers de escritura de string en el archivo

//tabla.close();//Error una tabla no se cierra

// cierra el flujo de datos en archivo
} catch (Exception e) {
System.err.println("Error " +e);
} // catch
} // [s] clase[/s] metodo agregar

Posible solución a tu problema.
Código (java) [Seleccionar]

@Action
public void Agregar() {

/*hare la suposición que la tabla existe y esto es solo para demostrar que es tabla una JTable*/       
JTable tabla ;
tabla = new JTable();


// CODIGO ESCRITURA
try{

//Para algo servira seguire revisando
Object valor = null;
// valor = new Object(); // para qué, si vamos a extraer un valor no a crear  uno nuevo
// Declarando variable valor       

//Abriendo el archivo
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("prueba.txt"));

int columna;
for(columna=0; columna<tabla.getColumnCount(); columna++) { 
      /*Como alguien ya menciono antes muestras el valor(a la salida estandar) de 1 sola columna y de la segunda si no me equivoco (el cero tambien cuenta)*/
//System.out.println(tabla.getValueAt(1, columna)); // fila 1   columna
   valor = tabla.getValueAt(1, columna);
   bufferedWriter.append("Fila 1:  "+valor);// método de writter java, regresa la escritura
   bufferedWriter.newLine(); // escribe una línea separadora
}   // ciclo for         
bufferedWriter.flush();//salida de flujo
bufferedWriter.close();// cierra flujo

//[s] Bufers de escritura de string en el archivo[/s]
//[s]tabla.close();//Error una tabla no se cierra[/s]
// cierra el flujo de datos en archivo
} catch (Exception e) {
System.err.println("Error " +e);
} // catch
} // [s] clase[/s] metodo agregar

Bueno te he dejado una posible solución solo reordenando tu codigo y escribiendo algo poco. Porque posible porque no se realmente cual sea tu problema y la solución que estes buscando, como recomendación practica con arreglos unidimensionales y bidimensionales no importa en que lenguaje pero te servira para solucionar estos problemas.
Saludos  ;D

greenselves

NO, sigue sin guardar los contactos, pero seguire intentando, gracias!
Greenselves

egyware

Claro acaso no te deje comentado que usas una tabla nueva (vacia)
como quieres sacar datos de una tabla vacia?

greenselves

#35
jaja ok  gracias... yo continuo con esto
Greenselves

egyware

XD estoy tranquilo, parece que lo que escribi suena muy alterado  :-[
Bueno avisa si funciona

sapito169

1 crea tu Jtable (drag and droop )
2 cambiale las propiedas que quieras clik derecho propiedades ensima del jtable
3 click derecho en la tabla y luego seleciona contenido de la tabla y cambiale a tu gusto

cada ves que quieras usar tu tabla Debes poner el codigo equivalente a esto



DefaultTableModel miModelo = (DefaultTableModel) jTable1.getModel();
        ascositas(miModelo);



para limpiar tu tabla

DefaultTableModel miModelo = (DefaultTableModel) jTable1.getModel();
        miModelo.setRowCount(0);


sapito169

Cita de: egyware en 20 Diciembre 2009, 21:03 PM
Claro acaso no te deje comentado que usas una tabla nueva (vacia)
como quieres sacar datos de una tabla vacia?

claro ese es el problema para obtener la tabla que esta en tu formulario usa los codigos que puse anteriormente

sapito169

#39

package javaapplication10;

import java.io.IOException;

import javax.swing.table.TableModel;
import java.io.BufferedWriter;
import java.io.FileWriter;


public class Reporte {

   private TableModel model;
   private BufferedWriter bufferedWriter;

   public Reporte(TableModel model) throws IOException {
       this.model = model;
       bufferedWriter = new BufferedWriter(new FileWriter("Reporte.txt"));
   }

   public Reporte(TableModel model, String nombre) throws IOException {
       this.model = model;
       bufferedWriter = new BufferedWriter(new FileWriter(nombre));
   }

   public TableModel getModel() {
       return model;
   }

   public void InprimeReporte() {
       try {
           String linea = "";
           for (int f = 1; f <= model.getRowCount(); f++) {
               for (int c = 1; c <= model.getColumnCount(); c++) {
                   Object valor = model.getValueAt(f - 1, c - 1);
                   linea = linea + " " + model.getColumnName(c - 1) + ": " + valor;
               }
               bufferedWriter.append(f + ".- " + linea);
               bufferedWriter.newLine();
               linea = "";
           }
           bufferedWriter.flush();
           bufferedWriter.close();
       } catch (IOException ex) {
           System.err.print(":=( error inesperado nunca devi llegar a qui");
           ex.printStackTrace();
       }
   }
}



dentro de tu boton

private void btnReporteActionPerformed(java.awt.event.ActionEvent evt) {
        try {
            TableModel model = jTable1.getModel();
            Reporte reporte = new Reporte(model, "mi Archivo.txt");
            reporte.InprimeReporte();
        } catch (IOException ex) {
            JOptionPane.showMessageDialog(null, "ups algo salio mal\n" + ex.getMessage());
        }
}



sorry por el triple post no vuelvo a cometer ese error  ;)