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
- Inicie sesión o regístrese para enviar comentarios
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
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.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.