Hallo Forum,
ich weiß wirklich nicht mehr weiter. Ich habe jetzt 3 Stunden gegooglet und keine wirkliche Antwort auf mein Problem gefunden.
Kurze Erklärung zum Programm:
Es werden aus einer Datenbank Datensätze abgefragt und in ein jTable eingefügt. Bei einem Klick auf einen Button werden neue Datensätze in die Datenbank eingetragen. Danach soll (einfach) jTable mit den neuen Datensätzen angezeigt werden. Das kann doch nicht so kompliziert sein, oder doch?
Zuerst die Klasse, die mir die jTable mit Daten füllt:
Um die Tabelle anzuzeigen mache ich dann nach InitComponents(Netbeans GUI Zeug):
Und dann bin ich mit meinem Latein am Ende. Wie bekomme ich die Tabelle nun dazu sich nach einem Klick auf den Button, der neue Datensätze in die Datenbank schreibt, zu aktualisieren?
Ich habe irgendwas mit DefaultModel gelesen usw. aber ich habe keine wirkliche Ahnung, was ich da wo einfügen muss.
Vielen Dank für jeden Tipp.
Tschau
ich weiß wirklich nicht mehr weiter. Ich habe jetzt 3 Stunden gegooglet und keine wirkliche Antwort auf mein Problem gefunden.
Kurze Erklärung zum Programm:
Es werden aus einer Datenbank Datensätze abgefragt und in ein jTable eingefügt. Bei einem Klick auf einen Button werden neue Datensätze in die Datenbank eingetragen. Danach soll (einfach) jTable mit den neuen Datensätzen angezeigt werden. Das kann doch nicht so kompliziert sein, oder doch?
Zuerst die Klasse, die mir die jTable mit Daten füllt:
Code:
public class TabelleErstellen extends AbstractTableModel {
private String [] header = {"Absender", "Betreff", "Datum", "Auswählen"};
private Object[][] data = (Object[][]) getData();
public String getColumnName(int columnIndex) {
switch (columnIndex) {
case 0:
return "Absender";
case 1:
return "Betreff";
case 2:
return "Datum";
case 3:
return "Auswählen";
default:
return null;
}
}
public int getRowCount() {
return data.length;
}
public int getColumnCount() {
return header.length;
}
public Object getValueAt(int row, int col) {
return data[row][col];
}
public Class getColumnClass(int c) {
switch (c) {
case 0:
return String.class;
case 1:
return String.class;
case 2:
return String.class;
case 3:
return Boolean.class;
default:
return null;
}
}
public void setValueAt(Object value, int row, int col) {
data[row][col] = value;
fireTableCellUpdated(row, col);
}
private int getAnzahl() {
ResultSet anzahl = null;
int a_anzahl = 0;
DBconnect verbindung1 = null;
try {
verbindung1 = new DBconnect("email");
anzahl = (ResultSet) verbindung1.getRs("SELECT COUNT('SENDER') FROM MAIL");
anzahl.next();
a_anzahl = Integer.parseInt(anzahl.getString(1));
verbindung1.shutdown();
} catch (Exception ex) {
ex.printStackTrace();
}
return a_anzahl;
}
public Object getData() {
ResultSet mail = null;
String datum = null;
String sender = null;
String empfaenger = null;
String betreff = null;
String inhalt = null;
DBconnect verbindung1 = null;
int a_anzahl = getAnzahl();
Object [ ][ ] data = new Object[a_anzahl][4];
try {
verbindung1 = new DBconnect("email");
mail = (ResultSet) verbindung1.getRs("SELECT DATUM, SENDER, BETREFF FROM mail");
while(mail.next()) {
datum = mail.getString(1);
sender = mail.getString(2);
betreff = mail.getString(3);
datum = datum.replaceFirst("Date: ", "");
sender = sender.replaceFirst("From: ", "");
betreff = betreff.replaceFirst("Subject: ", "");
data[a_anzahl-1][0] = sender;
data[a_anzahl-1][1] = betreff;
data[a_anzahl-1][2] = datum;
data[a_anzahl-1][3] = new Boolean(false);
a_anzahl--;
}
verbindung1.shutdown();
} catch (Exception ex) {
ex.printStackTrace();
}
return data;
}
}
Um die Tabelle anzuzeigen mache ich dann nach InitComponents(Netbeans GUI Zeug):
Code:
TabelleErstellen tabelle = new TabelleErstellen();
jTable1.setModel(tabelle);
jTable1.setShowVerticalLines(false);
Und dann bin ich mit meinem Latein am Ende. Wie bekomme ich die Tabelle nun dazu sich nach einem Klick auf den Button, der neue Datensätze in die Datenbank schreibt, zu aktualisieren?
Ich habe irgendwas mit DefaultModel gelesen usw. aber ich habe keine wirkliche Ahnung, was ich da wo einfügen muss.
Vielen Dank für jeden Tipp.
Tschau