Hallo Leute
Ich habe diese JTable:
Und dieses Model
Ich füge über normal Text Fields dateien in eine Datenbank ein. Danch aktualisiere ich die Vectoren die die Tabelle bilden(was auch funktioniert) und weise der Tabelle das Modell mit den neuen Vectoren zu. Das mach ich so:
Nur die Tabelle aktualisiert sich nicht was mach ich falsch?? Die oben genannte Aktion läuft ab wenn ich auf einen JButton klicke.
weiterhin habe ich noch ein:
Dieser hat mal funktioniert, jetzt macht er gar nichts mehr.
Bitte verweist mich nicht auf die FAQ. Ich hab die schon so oft und runter gekaut. Vielleicht bin ich zu blöd dafür aber ich kann da kein Hinweis auf meine Probleme entecken.
Hoffe ich habe alles gut beschrieben.
Ich habe diese JTable:
Code:
private JTable getJTable() {
if (jTable == null) {
jTable = new JTable();
jTable.setModel(atm);
jTable.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
jTable.setAutoResizeMode( JTable.AUTO_RESIZE_OFF );
TableColumnModel columnModel = jTable.getColumnModel();
columnModel.getColumn( 0 ).setPreferredWidth( 80 );
columnModel.getColumn( 1 ).setPreferredWidth( 50 );
columnModel.getColumn( 2 ).setPreferredWidth( 140);
columnModel.getColumn( 3 ).setPreferredWidth( 30 );
TableColumn bezeichnungsColumn = jTable.getColumnModel().getColumn(2);
bezeichnungsColumn.setCellEditor(new DefaultCellEditor(getJComboBoxBezeichnung()));
//TableColumn idColumn = jTable.getColumnModel().getColumn(3);
JTableHeader header = jTable.getTableHeader();
header.setReorderingAllowed(false);
atm.addTableModelListener(new InteractiveTableModelListener());
}
return jTable;
}
Und dieses Model
Code:
public class MyTableModel extends AbstractTableModel
{
/**
*
*/
private static final long serialVersionUID = -9072279854289269980L;
private Vector data;
private Vector columNames;
/**
*/
public MyTableModel(Vector columNames, Vector data)
{
this.columNames = columNames;
this.data = data;
}
public int getRowCount() {
// TODO Automatisch erstellter Methoden-Stub
return data.size();
}
public int getColumnCount() {
// TODO Automatisch erstellter Methoden-Stub
return columNames.size();
}
public Object getValueAt(int rowIndex, int columnIndex) {
Vector rowVector = (Vector)data.elementAt(rowIndex);
return rowVector.elementAt(columnIndex);
}
public boolean isCellEditable(int row, int column)
{
if (column < 3)
{
return true;
}
else
{
return false;
}
}
public String getColumnName(int col) {
return columNames.elementAt(col).toString();
}
}
Ich füge über normal Text Fields dateien in eine Datenbank ein. Danch aktualisiere ich die Vectoren die die Tabelle bilden(was auch funktioniert) und weise der Tabelle das Modell mit den neuen Vectoren zu. Das mach ich so:
Code:
getTableFromDatabase(1);
getJTable().setModel(atm);
atm.fireTableDataChanged();
Nur die Tabelle aktualisiert sich nicht was mach ich falsch?? Die oben genannte Aktion läuft ab wenn ich auf einen JButton klicke.
weiterhin habe ich noch ein:
Code:
public class InteractiveTableModelListener implements TableModelListener
{
public void tableChanged(TableModelEvent evt)
{
String abfrage = "UPDATE zeltdetail SET schlüssel = ?, anzahl = ?, bezeichnung = ?, zelt = ? WHERE zdid = ?";
if (evt.getType() == TableModelEvent.UPDATE)
{
//int column = evt.getColumn();
int row = evt.getFirstRow();
try
{
PreparedStatement psStmt = DBVerbindung.verbindung.prepareStatement(abfrage);
for (int column = 0; column < getJTable().getColumnCount(); column++)
{
Object value = getJTable().getValueAt(row, column);
if(value==null)
{
value = "";
}
if (column == 0)
{
psStmt.setString(column+1,value.toString());
}
if (column == 1)
{
psStmt.setInt(column+1,Integer.parseInt(value.toString()));
}
if (column == 2)
{
int bezID = z.getZeltDetailBezeichnungID(value.toString());
psStmt.setInt(column+1,bezID);
}
}
psStmt.setInt(4,z.getIID());
psStmt.setInt(5,Integer.parseInt(getJTable().getValueAt(row,3).toString()));
psStmt.executeUpdate();
psStmt.close();
}
catch(SQLException my_sqlex)
{
System.out.println("**************************************************************************");
System.out.println("ERROR: Datenbankfehler: " + my_sqlex.getMessage());
System.out.println("--------------------------------------------------------------------------");
String sFehlermeldungSQL = my_sqlex.getMessage();
JOptionPane.showMessageDialog (null,sFehlermeldungSQL);
my_sqlex.printStackTrace();
System.out.println("**************************************************************************");
}
catch(Exception my_ex)
{
System.out.println("**************************************************************************");
System.out.println("ERROR: Sonstiger Fehler: " + my_ex.getMessage());
System.out.println("--------------------------------------------------------------------------");
my_ex.printStackTrace();
String sFehlermeldung = my_ex.getMessage();
JOptionPane.showMessageDialog (null,sFehlermeldung);
System.out.println("**************************************************************************");
}
}
}
}
Dieser hat mal funktioniert, jetzt macht er gar nichts mehr.
Bitte verweist mich nicht auf die FAQ. Ich hab die schon so oft und runter gekaut. Vielleicht bin ich zu blöd dafür aber ich kann da kein Hinweis auf meine Probleme entecken.
Hoffe ich habe alles gut beschrieben.