Foros del Web » Programación para mayores de 30 ;) » Java »

Llenar un JTable con informacion almacenada en un txt

Estas en el tema de Llenar un JTable con informacion almacenada en un txt en el foro de Java en Foros del Web. Hola que tal!! Somos nuev@s dentro de este foro, pero gracias a varios temas dentro del foro de java nos han resuelto muchas dudas ya ...
  #1 (permalink)  
Antiguo 19/09/2011, 12:06
 
Fecha de Ingreso: septiembre-2011
Mensajes: 4
Antigüedad: 13 años, 1 mes
Puntos: 0
Pregunta Llenar un JTable con informacion almacenada en un txt

Hola que tal!!
Somos nuev@s dentro de este foro, pero gracias a varios temas dentro del foro de java nos han resuelto muchas dudas ya que tambien somos nuev@s en la programacion en java, pero hay algo q no hemos podido encontrar y es si se puede llenar un JTable con la informacion de un txt, sin el uso de base de datos, ya que lo hemos estado intentando y aun no podemos lograrlo . Les agradesco de antemano por la ayuda y muchos saludos a todos.
  #2 (permalink)  
Antiguo 19/09/2011, 12:31
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: Llenar un JTable con informacion almacenada en un txt

Sí es posible.

Hay que leer el fichero, analizarlo para separar los posibles filas/columnas y luego ir metiendo esos campos en el JTable o el TableModel que uses.

Para leer el fichero, http://chuwiki.chuidiang.org/index.p...cheros_en_Java

Para separar campos de columnas de cada línea leída, puede ayudarte el método split() de la clase String.

Para meterlos en el JTable, usa un DefaultTableModel que es lo más sencillo http://chuwiki.chuidiang.org/index.php?title=JTable

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 19/09/2011, 16:53
 
Fecha de Ingreso: septiembre-2011
Mensajes: 4
Antigüedad: 13 años, 1 mes
Puntos: 0
Sonrisa Respuesta: Llenar un JTable con informacion almacenada en un txt

Hola!
Muchas gracias por contestar a nuestra pregunta!!!, como habia mencionado anteriormente, hemos estado tratando de hacerlo usando tanto la lectura del archivo de texto y el split, como un TableModel, solo que con el codigo que tenemos se genera nuestra tabla pero no las filas con la informacion que tiene nuestro archivo de texto, creo que aun no comprendo bien como pasar los valores al TableModel para que asi se generen las filas.
Aqui te muestro las partes del codigo donde se lee el archivo y se especifica el contenido de la tabla.


class MyTableModel extends AbstractTableModel {
private String[] columnNames = { "Nombre",
"Apellido",
"Pasatiempo",
"Años de Practica",
"Soltero(a)"};


public int getColumnCount() {
return columnNames.length;
}

public int getRowCount() {
return arraynet.size();
}

public String getColumnName(int col) {
return columnNames[col];
}


public Object getValueAt(int row, int col)
{
return arraynet.get(row);
}


}



private static void creatArr()
{
BufferedReader br = null;

try
{
br = new BufferedReader(new FileReader("miDocumento.txt"));
String line = br.readLine();

while (line != null )
{
String [] rowfields = line.split("[ ]+");
arraynet.add(rowfields);
line = br.readLine();
}

}
catch(Exception e)
{
System.out.println(e.getMessage());
}


}
  #4 (permalink)  
Antiguo 20/09/2011, 00:53
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: Llenar un JTable con informacion almacenada en un txt

Hola:

En este trozo de código

Código java:
Ver original
  1. public Object getValueAt(int row, int col)
  2. {
  3. return arraynet.get(row);
  4. }

debes devolver el valor de una celda concreta, no toda la fila. Deberías devolver algo como

Código java:
Ver original
  1. return arraynet.get(row)[col]

Para no complicarte mucho, te aconsejaría que usaras directamente un DefaultTableModel que vayas rellenando con los datos del fichero.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #5 (permalink)  
Antiguo 20/09/2011, 11:04
 
Fecha de Ingreso: septiembre-2011
Mensajes: 4
Antigüedad: 13 años, 1 mes
Puntos: 0
Pregunta Respuesta: Llenar un JTable con informacion almacenada en un txt

Hola!
Muchas gracias "chuidiang" por seguir contestando a nuestras dudas. Sobre tus recomendaciones anteriores, ya lo cambie a DefaultTableModel con lo cual todo estuvo bien pero al corregir la linea:
return arraynet.get(row)[col]

Me marca el siguiente error:
array required, but java.lang.Object found

Creo que sigo sin entender bien como pasar los valores de mi txt al JTable.
Solo hice unos lijeros cambios.
Te muestro mi codigo completo. Talvez el error este ahi y no lo veo.
De antemano muchas gracias. Saludos!!!

Código:
package tablacontxt;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.JScrollPane;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.*;
import javax.swing.JTabbedPane;
import java.io.*;
import java.util.*;

public class TableDemo extends JFrame{

    static ArrayList arraynet = new ArrayList();
   

      public TableDemo() {
         super("Ejemplo 3");
         
        MyTableModel myModel = new MyTableModel();
        JTable table = new JTable(myModel);
        table.setPreferredScrollableViewportSize(new Dimension(500, 70));
        JTabbedPane panelInformacion = new JTabbedPane();
        
        JPanel panel1 = new JPanel();
        panel1.add( new JScrollPane( table ));
        panelInformacion.addTab( "Puertos", null, panel1, "Primer panel" );

        getContentPane().add( panelInformacion );

        setSize( 800, 600 );
        setVisible( true );


     }

   class MyTableModel extends DefaultTableModel {
           final String[] columnNames = {"Nombre",
            "Apellido",
            "Pasatiempo",
            "Años de Practica",
            "Soltero(a)"};

           public int getColumnCount() {
            return columnNames.length;
            }
          
            public int getRowCount() {
            return arraynet.size();
                
            }
           
            public String getColumnName(int col) {
            return columnNames[col];
            }
           
            public Object getValueAt(int row, int col) {
            return arraynet.get(row)[col];

            }
      
    private static void creatArr()
      
   {
            BufferedReader br = null;
      try
     {
        
         br = new BufferedReader(new FileReader("miDocumento.txt"));
        
          String line = br.readLine();
       
       while (line != null )
       {
         String [] rowfields = line.split("  ");
         arraynet.add(rowfields);
         line = br.readLine();
           
        }
     }
     

      catch(Exception e)
      {
          	System.out.println(e.getMessage());
      }
         
 }

    public static void main(String[] args) {
        
        TableDemo aplicacion = new TableDemo();
	aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
         javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                 creatArr();
                

             }
         });
    }

}
  #6 (permalink)  
Antiguo 20/09/2011, 12:45
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: Llenar un JTable con informacion almacenada en un txt

Hola:

Si usas DefaultTableModel no necesitas heredar de el, símplemente úsalo

Código java:
Ver original
  1. modelo.addColumn("nombre");
  2. modelo.addColumn(....);
  3. ....
  4. JTable tabla = new JTable(modelo);
  5.  
  6. abre fichero
  7. bucle para cada linea {
  8.    String [] rowfields = line.split("  ");
  9.    modelo.addRow(rowfields);
  10. }

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #7 (permalink)  
Antiguo 20/09/2011, 18:01
 
Fecha de Ingreso: septiembre-2011
Mensajes: 4
Antigüedad: 13 años, 1 mes
Puntos: 0
De acuerdo Respuesta: Llenar un JTable con informacion almacenada en un txt

Hola!!
Muchas GRACIAS chuidiang nos has iluminado, ya lo conseguimos.
Muchos Saludos!!!
Aqui el codigo final.

Código:
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.JScrollPane;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.*;
import javax.swing.JTabbedPane;
import java.io.*;


public class TableDemo extends JFrame{

    public TableDemo() {

         super("Ejemplo 3");
          

        DefaultTableModel myModel = new DefaultTableModel();
        myModel.addColumn("Nombre");
        myModel.addColumn("Nombre");
        myModel.addColumn("Nombre");
        myModel.addColumn("Nombre");
        myModel.addColumn("Nombre");
       
        JTable table = new JTable(myModel);
        table.setPreferredScrollableViewportSize(new Dimension(500, 150));


         
            BufferedReader br = null;
                try{
                    br = new BufferedReader(new FileReader("C:/myDocument.txt"));
                    String line = br.readLine();

                    for(int row = 0; row < 10 ; row++){
                        for(int column = 0; column<5 ;column++){


                                   while (line != null )
                                   {
                                     String [] rowfields = line.split("\\s+");
                                     myModel.addRow(rowfields);
                                     line = br.readLine();
                                    }
                                   
                                }
                             }

                        }
                catch(Exception e)
                  {
                            System.out.println(e.getMessage());
                  }
        

        

        JTabbedPane panelInformacion = new JTabbedPane();
        JPanel panel1 = new JPanel();
        panel1.add( new JScrollPane( table ));
        panelInformacion.addTab( "Codigo", null, panel1, "Primer panel" );
        //agregar objeto JTabbedPane al contenedor
        getContentPane().add( panelInformacion );

        setSize( 800, 600 );
        setVisible( true );
    }
    public static void main(String[] args) {
        // TODO code application logic here
        TableDemo aplicacion = new TableDemo();
	aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    }

}

Etiquetas: informacion, jtable, txt, almacenadas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:11.