Hallo!
Ich habe ein Problem mit einem selbstgeschriebenem TableModel.
Ich möchte aus einer Tabelle (aus MySql-DB) Datensätze in ein JTable schreiben.
Hab dazu ein eigenes TableModel das von AbstractTableModel erbt.
Quelltext siehe unten.
Es funktioniert auch soweit, nur wenn ich das mehrmals hintereinander mache, datet er immer alle eingefügten Zeilen ab.
funktioniert über JDialog.
Ich hoffe das Problem ist rübergekommen.
Um jede Hilfe wäre ich dankbar.
Mir sind die Ideen ausgegangen
Gruß
Ich habe ein Problem mit einem selbstgeschriebenem TableModel.
Ich möchte aus einer Tabelle (aus MySql-DB) Datensätze in ein JTable schreiben.
Hab dazu ein eigenes TableModel das von AbstractTableModel erbt.
Quelltext siehe unten.
Es funktioniert auch soweit, nur wenn ich das mehrmals hintereinander mache, datet er immer alle eingefügten Zeilen ab.
funktioniert über JDialog.
Ich hoffe das Problem ist rübergekommen.
Um jede Hilfe wäre ich dankbar.
Mir sind die Ideen ausgegangen
Gruß
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
import java.sql.*;
import java.util.*;
public class ResultSetTableModel extends AbstractTableModel {
private ResultSet rs;
private ResultSetMetaData rsm;
private Vector tmp;
private boolean isEditable;
public ResultSetTableModel(ResultSet rs) {
this.rs = rs;
try {
tmp = new Vector();
rsm = rs.getMetaData();
while (rs.next()) {
Object[] row = new Object[rsm.getColumnCount()];
for (int j = 0; j < row.length; j++) {
row[j] = rs.getObject(j + 1);
}
tmp.add(row);
}
} catch (Exception e) {
System.out.println("Error: " + e);
}
}
public void setIsEditable(boolean isEditable) {
this.isEditable = isEditable;
}
public int getRowCount() {
return tmp.size();
}
public int getColumnCount() {
try {
return rsm.getColumnCount();
} catch (Exception e) {
System.out.println("Error: " + e);
return 0;
}
}
public Object getValueAt(int row, int col) {
if (row < tmp.size()) {
return((Object[])tmp.get(row))[col];
} else {
return null;
}
}
public String getColumnName(int c) {
try {
return rsm.getColumnName(c + 1);
} catch (Exception e) {
System.out.println("Error: " + e);
return null;
}
}
public void addRow(Object[] add){
tmp.add(add);
fireTableDataChanged();
fireTableRowsInserted(tmp.size()-1, tmp.size()-1);
}
public void setValueAt(Object aValue, int rowIndex, int colIndex){
((Object[])tmp.get(rowIndex))[colIndex] = aValue;
fireTableCellUpdated(rowIndex, colIndex);
}
public boolean isCellEditable(int row, int col){
return isEditable;
}
public Vector getDataVector(){
return tmp;
}
public void removeRow(int row){
tmp.removeElementAt(row);
fireTableRowsDeleted(row, row);
}
}