Interactive JTable changes entered disappear
I've been working at this problem for a while and JTable has been
kicking my butt. I've got some database search results that are added
to custom objects (holding text basically) and then added to an
array. the results display fine, and I've been using this howto:
http://www.swingwiki.org/howto:interactive_jtable to setup my
interactive table. Unfortunately when i update a cell, the data that
is entered does not appear after i move to another cell.
here's my interactive table code:
import java.util.Vector;
import javax.swing.table.AbstractTableModel;
//modify this for our purposes
public class InteractiveTableModel extends AbstractTableModel {
public static final int TIME_INDEX = 0;
public static final int CLASS_INDEX = 1;
public static final int DAY_INDEX = 2;
public static final int MEMBERS_INDEX = 3;
public static final int MINUTES_NONTEACHING_INDEX = 4;
public static final int MINUTES_OUTSIDE_INDEX = 5;
public static final int MINUTES_TEACHING_INDEX = 6;
private String[] columnNames;
public static Vector dataVector;
public static String teacherName;
public static String day;
public InteractiveTableModel(String[] columnNames, Vector table)
{
this.columnNames = columnNames;
dataVector = (Vector)table.clone();
System.out.println("Length of dataVector is:
"+dataVector.size());
}
@Override
public String getColumnName(int column) {
return columnNames[column];
}
@Override
public boolean isCellEditable(int row, int column) {
return true;
}
@Override
public Class getColumnClass(int column) {
switch (column) {
case TIME_INDEX:
case CLASS_INDEX:
case DAY_INDEX:
case MEMBERS_INDEX:
case MINUTES_NONTEACHING_INDEX:
case MINUTES_OUTSIDE_INDEX:
case MINUTES_TEACHING_INDEX:
return String.class;
default:
return Object.class;
}
}
public String getValueAt(int row, int column) {
//dataVector =
(Vector)CreateDBSchedule.resultFinder(teacherName, day).clone();
resultObject rowData =
(teachingrecord.resultObject)dataVector.elementAt(row);
System.out.println("We've made it to get value at"+row
+column);
try {
switch (column) {
case TIME_INDEX:
System.out.println("Row: "+row+" Coulmn: "+column+
"Equals: "+rowData.getTime());
return rowData.getTime();
case CLASS_INDEX:
System.out.println("Row: "+row+" Coulmn: "+column+
"Equals: "+rowData.getClassCode());
return rowData.getClassCode();
case DAY_INDEX:
System.out.println("Row: "+row+" Coulmn: "+column+
"Equals: "+rowData.getDayOfWeek());
return rowData.getDayOfWeek();
case MEMBERS_INDEX:
System.out.println("Row: "+row+" Coulmn: "+column+
"Equals: "+rowData.getMembers());
return rowData.getMembers();
case MINUTES_NONTEACHING_INDEX:
System.out.println("Row: "+row+" Coulmn: "+column+
"Equals: "+rowData.getMinutesNonTeaching());
return rowData.getMinutesNonTeaching();
case MINUTES_OUTSIDE_INDEX:
System.out.println("Row: "+row+" Coulmn: "+column+
"Equals: "+rowData.getMinutesOutside());
return rowData.getMinutesOutside();
case MINUTES_TEACHING_INDEX:
System.out.println("Row: "+row+" Coulmn: "+column+
"Equals: "+rowData.getMinutesTeaching());
return rowData.getMinutesTeaching();
default:
System.out.println("Nothing here?");
return "Nothing";
}
} catch(NullPointerException e){
System.out.println("Nothing here: "+e);
return null;
}
}
public void setValueAt(String value, int row, int column) {
//TODO
resultObject rowData =
(resultObject)dataVector.elementAt(row);
switch (column) {
case TIME_INDEX:
rowData.setTime(value);
break;
case CLASS_INDEX:
rowData.setClassCode(value);
break;
case DAY_INDEX:
rowData.setDayOfWeek(value);
break;
case MEMBERS_INDEX:
rowData.setMembers(value);
break;
case MINUTES_NONTEACHING_INDEX:
rowData.setMinutesNonTeaching(value);
break;
case MINUTES_OUTSIDE_INDEX:
rowData.setMinutesOutside(value);
break;
case MINUTES_TEACHING_INDEX:
rowData.setMinutesTeaching(value);
break;
default:
System.out.println("something bad happened changing
the table");
break;
}
dataVector.set(row, rowData);
fireTableCellUpdated(row, column);
}
public int getRowCount() {
System.out.println("Get row count: "+dataVector.size());
return dataVector.size();
}
public int getColumnCount() {
System.out.println("Column Count: "+columnNames.length);
return columnNames.length;
}
public static Vector getTable(){
return dataVector;
}
}
i can post the rest if it helps as well. anything to point me in the
right direction would be helpful. thanks