Java - Actualizar JTable

 
Vista:

Actualizar JTable

Publicado por Fernando (1 intervención) el 24/03/2007 05:01:26
Tengo este fragmento de codigo:

private JScrollPane getJtableListar() {

try {
String[] columnNames = {"Registro", "Concepto", "Padron", "Vale", "Importe", "Van cuotas", "De cuotas", "Tasa 1", "Cédula func.", "Cargo IMM", "Año liquidación", "Mes liquidación", "Tasa 2"};

Object[][] data = new Object[10000][13];

String dato = new String();

DataInputStream in = new DataInputStream(new FileInputStream("c:/sgh/nombre.txt"));

DefaultTableModel modelo = new DefaultTableModel(columnNames, 10000);

int i = 0;

while((dato = in.readLine()) != null) {
//Ingresa registro
modelo.setValueAt(dato.substring(2, 5).replace(" ", ""), i, 0);
modelo.fireTableDataChanged();
//Ingresa concepto
modelo.setValueAt(dato.substring(5, 9).replace(" ", ""), i, 1);
modelo.fireTableDataChanged();
//Ingresa padron
modelo.setValueAt(dato.substring(9, 15).replace(" ", ""), i, 2);
modelo.fireTableDataChanged();
//Ingresa vale
modelo.setValueAt(dato.substring(15, 21).replace(" ", ""), i, 3);
modelo.fireTableDataChanged();
//Ingresa importe
//data[i][4] = dato.substring(21, 27).replace(" ", "");
String importe = dato.substring(21, 27).replace(" ", "");
modelo.fireTableDataChanged();
//Ingresa decimales importe
importe = importe + "," + dato.substring(27, 29);
modelo.setValueAt(importe, i, 4);
modelo.fireTableDataChanged();
//Ingresa van cuotas
modelo.setValueAt(dato.substring(29, 31).replace(" ", ""), i, 5);
modelo.fireTableDataChanged();
//Ingresa de cuotas
modelo.setValueAt(dato.substring(31, 33).replace(" ", ""), i, 6);
modelo.fireTableDataChanged();
//Ingresa tasa 1
//data[i][7] = dato.substring(33, 38).replace(" ", "");
String tasa1 = dato.substring(33, 36).replace(" ", "");
//Ingresar decimales tasa 1
tasa1 = tasa1 + "," + dato.substring(36, 38);
modelo.setValueAt(tasa1, i, 7);
modelo.fireTableDataChanged();
//Ingresa cedula func
modelo.setValueAt(dato.substring(39, 47).replace(" ", ""), i, 8);
modelo.fireTableDataChanged();
//Ingresa cargo IMM
modelo.setValueAt(dato.substring(48, 49).replace(" ", ""), i, 9);
modelo.fireTableDataChanged();
//Ingresa año liquidacion
modelo.setValueAt(dato.substring(49, 53).replace(" ", ""), i, 10);
modelo.fireTableDataChanged();
//Ingresa mes liquidacion
modelo.setValueAt(dato.substring(53, 55).replace(" ", ""), i, 11);
modelo.fireTableDataChanged();
//Ingresa tasa 2
//data[i][12] = dato.substring(55, 60).replace(" ", "");
String tasa2 = dato.substring(55, 58).replace(" ", "");
//Ingresar decimales tasa 2
tasa2 = tasa2 + "," + dato.substring(58, 60);
modelo.setValueAt(tasa2, i, 12);
modelo.fireTableDataChanged();
i++;
}

//jtableListar = new JTable(data, columnNames);

jtableListar = new JTable();
jtableListar.setModel(modelo);

JScrollPane jspane = new JScrollPane(jtableListar);
return jspane;
}
catch(IOException e){}

return null;
}

Cada vez que voy a un menu listar me muestra los datos que carga de un archivo txt. Pero cuando agrego nuevos datos voy a listar y no me actualiza los datos, o sea no me carga los datos del archivo junto con los datos que ingrese.

Como puedo actualizar la lista cada vez que agregue nuevos datos, cada vez que doy en el menu listar?

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Actualizar JTable

Publicado por BAT (1 intervención) el 28/03/2007 12:44:24
Me considero inexperto en Java, pero hace poco tuve un problema similar almacenando datos en texto.

Yo te recomendaría que hicieras otro arreglo (o ArrayList) en donde vayas agregando las líneas del DataInputStream (nótese que yo usé un BufferedReader) mientras las vas leyendo (cada in.readLine()).

Así tienes los datos del archivo en tiempo de ejecución. Cada que agregues un registro, se lo agregas de igual manera al arreglo y cuando hayas terminado (o al mismo tiempo que agregas el registro) mandas todo el arreglo al archivo de texto.

Técnicamente el txt se estaría sobreescribiendo cada vez con los datos del arreglo.

Espero haber sido claro por que en este momento ni yo me entiendo, ojalá que te sirva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar