Hallo zusammen,
ich habe leider ein Problem mit meiner JTable.
Ich habe eine JTable, die sich beim öffnen des Frames(also beim Aufruf von main) mit Daten füllen soll. Dazu habe ich ein AbstractTableModel erstellt. Jedoch habe ich den Eindruck, dass die JTable sich gar nicht mit dem Model verbindet, da getRowCount gar nicht aufgerufen wird. Ich habe schon gesucht, aber anscheinend mache ich iwas grundlegend Falsch...
So lade ich das Model in die JTable:
Und hier das Model:
Ist das denn überhaupt so richtig mit dem AbstractTabeleModel ??
Danke schon jetzt.. ich hoffe ihr könnt mir helfen
cpu32
ich habe leider ein Problem mit meiner JTable.
Ich habe eine JTable, die sich beim öffnen des Frames(also beim Aufruf von main) mit Daten füllen soll. Dazu habe ich ein AbstractTableModel erstellt. Jedoch habe ich den Eindruck, dass die JTable sich gar nicht mit dem Model verbindet, da getRowCount gar nicht aufgerufen wird. Ich habe schon gesucht, aber anscheinend mache ich iwas grundlegend Falsch...
So lade ich das Model in die JTable:
Java:
public class Bestand extends JFrame {
public static BestandTableModel bestandTabletabmodel = new BestandTableModel();
private static JTable table = new JTable(bestandTabletabmodel) ;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
startup();
Bestand frame = new Bestand();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public static void startup(){
BestandTableModel.loaddata();
bestandTabletabmodel.fireTableChanged(new TableModelEvent(bestandTabletabmodel));
}
}
// So habe ich versucht die Daten manuell zu aktualisieren
Und hier das Model:
Java:
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableModel;
public class BestandTableModel extends AbstractTableModel {
public static List s1 = new ArrayList();
public static List s2 = new ArrayList();
public static List s3 = new ArrayList();
public static List s4 = new ArrayList();
public static List s5 = new ArrayList();
public static List s6 = new ArrayList();
public static List s7 = new ArrayList();
public static List s8 = new ArrayList();
public static int rows;
public static void cleardata (){
s1.clear();
s2.clear();
s3.clear();
s4.clear();
s5.clear();
s6.clear();
s7.clear();
s8.clear();
}
public static void loaddata() {
cleardata();
int nummer = -1;
Statement stmt;
try {
stmt = main.conn.createStatement();
ResultSet rs = stmt.executeQuery("Select Art_Nr, Artikel, KatName, Material, Groesse, Bestand_Soll, Bestand_Ist, PrID from produkte, Kategorien Where Produkte.KatID = Kategorien.KatID");
while (rs.next()){
nummer += 1 ;
s1.add(nummer, rs.getString(1));
s2.add(nummer, rs.getString(2));
s3.add(nummer, rs.getString(3));
s4.add(nummer, rs.getString(4));
s5.add(nummer, rs.getString(5));
s6.add(nummer, rs.getInt(6));
s7.add(nummer, rs.getInt(7));
s8.add(nummer, rs.getInt(8));
}
stmt.close();
rs.close();
} catch (SQLException e) {e.printStackTrace();}
}
@Override
public int getColumnCount() {
return 7;
}
@Override
public int getRowCount() {
// Ich habe auch schon versucht anstelle dieses hier eine einfache Zahl zurückzugeben: "return 5;" zum Beispiel
String Querry = null;
Statement stmt = null;
ResultSet rs = null;
try{
stmt = main.conn.createStatement();
Querry = "Select Count(PrID) From Produkte";
rs = stmt.executeQuery(Querry);
while (rs.next()) {
rows = rs.getInt(1);
return rows;
}
rs.close();
stmt.close();
}catch (Exception e){e.printStackTrace();}
return 0;
}
@Override
public Object getValueAt(int row, int col) {
switch (col){
case 0: return s1.get(row);
case 1: return s2.get(row);
case 2: return s3.get(row);
case 3: return s4.get(row);
case 4: return s5.get(row);
case 5: return s6.get(row);
case 6: return s7.get(row);
}
return row;
}
public String getColumnName (int column) {
switch (column) {
case 0: return "Art-Nr.";
case 1: return "Artikel-Bez.";
case 2: return "Kategorie";
case 3: return "Material";
case 4: return "Größe";
case 5: return "Bestand Soll";
case 6: return "Bestand Ist";
default:return null;
}
}
}
Danke schon jetzt.. ich hoffe ihr könnt mir helfen
cpu32
Zuletzt bearbeitet: