Recargar información JTable
Publicado por Ayuda por favor (2 intervenciones) el 04/04/2007 09:44:17
Tengo una aplicación JAVA en la que cada 10 segundos tengo que recargar la información que contiene. Lo que me pasa es que al tiempo me sale una excepción JAVA HEAP SPACE. Estoy seguro que no lo hago de forma correcta. Pongo el código que hace el Thread cada 10 seg para ver si alguien me puede hechar una mano. Creo que lo que hago mal es crear todo el rato objetos DefaultTableModel y tableSorter y asignarlos a la tabla, el problema es que no se como recargar los datos de la tabla y que me aparezcan ordenados (de ahí que cree el tableSorter).
Vector vEvents = null;
try {
vEvents = getTableEvents();
} catch (DataBaseConnectionException e1) {
showDBErrorDialog();
}
//RowsData contiene vectores por cada celda de cada columna que contiene el texto a
//aparecer y el color de la celda.
Object rowsData[][];
rowsData = new Object[vEvents.size()/6][5];
int row = 0;
for(int x=0;x<vEvents.size();x=x+6){
String id= vEvents.get(x).toString();
for(int i=0;i<5;i++){
Vector<Object> v=new Vector<Object>();
v.add(id);
v.add(vEvents.elementAt(x+1+i));
//añadir color fore
//añadir color fondo
rowsData[row][i]= v;
}
row++;
}
String columnNames[];
columnNames = new String[5];
columnNames[0]=lm.getText(ITextCodes.TX_DATE_TIME);
columnNames[1]=lm.getText(ITextCodes.TX_TYPE);
columnNames[2]=lm.getText(ITextCodes.TX_SECUENCE);
columnNames[3]=lm.getText(ITextCodes.TX_EQUIPMENT);
columnNames[4]=lm.getText(ITextCodes.TX_DESCRIPTION);
DefaultTableModel myModel = new DefaultTableModel(rowsData,columnNames);
eventsTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
TableSorter sorter = new TableSorter(myModel);
if(ordByColumn!=-1){
sorter.sortByColumn(ordByColumn, order);
}
eventsTable.setModel(sorter);
sorter.addMouseListenerToHeaderInTable(eventsTable);
Vector widths = uProfile.getColumnsWidth();
for(int x=0;x<widths.size();x++){
try{
eventsTable.getColumnModel().getColumn(x).setPreferredWidth((Integer)widths.elementAt(x));
eventsTable.getColumnModel().getColumn(x).setWidth((Integer)widths.elementAt(x));
}catch(Exception e){
eventsTable.getColumnModel().getColumn(x).setPreferredWidth(80);
}
}
eventsTable.repaint();
Vector vEvents = null;
try {
vEvents = getTableEvents();
} catch (DataBaseConnectionException e1) {
showDBErrorDialog();
}
//RowsData contiene vectores por cada celda de cada columna que contiene el texto a
//aparecer y el color de la celda.
Object rowsData[][];
rowsData = new Object[vEvents.size()/6][5];
int row = 0;
for(int x=0;x<vEvents.size();x=x+6){
String id= vEvents.get(x).toString();
for(int i=0;i<5;i++){
Vector<Object> v=new Vector<Object>();
v.add(id);
v.add(vEvents.elementAt(x+1+i));
//añadir color fore
//añadir color fondo
rowsData[row][i]= v;
}
row++;
}
String columnNames[];
columnNames = new String[5];
columnNames[0]=lm.getText(ITextCodes.TX_DATE_TIME);
columnNames[1]=lm.getText(ITextCodes.TX_TYPE);
columnNames[2]=lm.getText(ITextCodes.TX_SECUENCE);
columnNames[3]=lm.getText(ITextCodes.TX_EQUIPMENT);
columnNames[4]=lm.getText(ITextCodes.TX_DESCRIPTION);
DefaultTableModel myModel = new DefaultTableModel(rowsData,columnNames);
eventsTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
TableSorter sorter = new TableSorter(myModel);
if(ordByColumn!=-1){
sorter.sortByColumn(ordByColumn, order);
}
eventsTable.setModel(sorter);
sorter.addMouseListenerToHeaderInTable(eventsTable);
Vector widths = uProfile.getColumnsWidth();
for(int x=0;x<widths.size();x++){
try{
eventsTable.getColumnModel().getColumn(x).setPreferredWidth((Integer)widths.elementAt(x));
eventsTable.getColumnModel().getColumn(x).setWidth((Integer)widths.elementAt(x));
}catch(Exception e){
eventsTable.getColumnModel().getColumn(x).setPreferredWidth(80);
}
}
eventsTable.repaint();
Valora esta pregunta


0