jtable

me podrian dar un ejemplo de como mostra informacion de una matriz en un jtble y posteriormente guardar esa informcion en un .txt, de antemano gracias

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Lo que el JTable presenta lo

Lo que el JTable presenta lo obtiene de el TableModel, entonces para salvarlo basta con que escribas lo que hay en el table model al archivo.

Ejemplo:

import javax.swing.*;
import javax.swing.table.*;
import java.awt.BorderLayout;
import java.awt.event.*;
import java.io.PrintStream;
import java.io.FileOutputStream;
import java.io.FileNotFoundException;

class TableDemo {
    public static void main( String ... args ) throws FileNotFoundException {

        // Los datos:
        final Object [][] data = {{1,2,3},{4,5,6},{7,8,9}};
        String [] columnas = {"A","B","C"};
        TableModel tableModel = new DefaultTableModel( data, columnas);
   
        // Ponerlos en el JFrame
        JFrame frame = new JFrame();
        frame.add( new JScrollPane( new JTable( tableModel )));

        // escribir en el archivo
        final PrintStream out = new PrintStream(new FileOutputStream("datos.txt"));
        frame.add( new JButton("Imprimir"){{
            addActionListener( new ActionListener() {
                public void actionPerformed( ActionEvent e ) {
                    for( Object[] row : data ) {
                        for( Object d : row ) {
                            out.print( d );
                        }
                        out.println();
                    }

                }
            });
        }}, BorderLayout.SOUTH);

        frame.pack();

        frame.setVisible( true );
    }
}

Este es solo un ejemplo. En la realidad debes de crear un table model propio, por que el DefaultTableModel es de solo lectura ( por eso aunque modifiques los datos, no se ven reflejados ) Para más sobre JTable y el tablemodel ve este link:

http://download.oracle.com/javase/tutorial/uiswing/components/table.html...

La forma en la que escribí en el archivo tampoco es la mejor, por ejemplo nunca se está cerrando el archivo, también lo tienes que hace.

Acá hay más información, pero el tema es un tanto más extenso:

http://download.oracle.com/javase/tutorial/essential/io/charstreams.html

Espero que esto te sirva aunque sea para guiarte un poco en el camino.

Saludos

gracias

me fue de gran ayuda tu aporte gracias por los links y el ejmplos que me proporcionaste.

oye y si quisiera meter los

oye y si quisiera meter los datos desde un arreglo o pasarle los datos desde un jtextarea como le hago, por q los datos del ejemplo ya estan definidos.

Tienes que crear un table

Tienes que crear un table model diferente:

Lee el link que te puse antes y preguntame todo lo que quieras que no entiendas de ahí:

http://download.oracle.com/javase/tutorial/uiswing/components/table.html...

Pero leelo, por que lo que me acabas de preguntar esta ahí explicado ( quizá no esta muy claro, eso sí, pero de que está ... está :P )

Chau!|

si lo lei pero no entendi muy

si lo lei pero no entendi muy bien pero aun asi lo volvere a intentar y ya luego te comento las dudas. gracias

Ahi te va un ejemplo usando

Ahi te va un ejemplo usando un custom table model

/**
 * Table model custom.
 * Al heredar de Abstract table model solo hay que
 * satisfacer tres metodos:
 * getRowCount()
 * getColumCount()
 * getValueAt()
 */

class MiTableModel extends AbstractTableModel {
    // Almaceno los datos aqui
    private List<String> data = new ArrayList<String>();

    // Creo el table model que en este caso
    // tiene dependencia con el TextField
    // es horrible, pero es solo un ejemplo
    public MiTableModel( final JTextField tf ) {

        // Cuando el usuario da enter en el text fied:
        tf.addActionListener( new ActionListener() {
            public void actionPerformed( ActionEvent e ) {
                // el texto se pone en la lista
                data.add( tf.getText() );
                // se borra el contenido actual
                tf.setText("");
                // y se notifica que los datos cambiaron
                fireTableDataChanged();
            }
        });
    }

    // El numero de renglones es igual al tamanio de la lista
    public int getRowCount() {
        return data.size();
     }
     // Siempre 2 uno para el numero de linea y otro para el dato
     public int getColumnCount() {
         return 2;
     }
     // Si la columa es la 0 regresa siempre el numero de row
     // sino regresa el valor almacenado en la lista
     public Object getValueAt( int r, int c ) {
         return c == 0 ? r : data.get( r );
     }
}

Se ve asi:

De ahí deberías poder deducir como hacer un table model propio y como jalar datos de un arregloy/o de un text area y/o de un archivo.