Hallo,
ich hab mir ein TableModell für eine generische Liste gemacht. Um mit einer ListenKlasse drei Listen zu erstellen hab ich die Listenklasse und das TableModel getrennt. Das Model liest mir die Daten aus einer Datei und schreibt sie in eine Liste.
wenn ich nun Manuell über einen Button ein weiteres Objekt an die Liste anfüge wird die Tabelle in der GUI nicht aktualisiert.
was moach ich hier falsch?
Meine Vermutung geht in richtung TableModelListener, aber was ich da falsch mache weis ich nicht.
hier mal der Code:
Liste:
das TableModell:
Kann mir vielleicht jemand helfen?
MfG Fritz
ich hab mir ein TableModell für eine generische Liste gemacht. Um mit einer ListenKlasse drei Listen zu erstellen hab ich die Listenklasse und das TableModel getrennt. Das Model liest mir die Daten aus einer Datei und schreibt sie in eine Liste.
wenn ich nun Manuell über einen Button ein weiteres Objekt an die Liste anfüge wird die Tabelle in der GUI nicht aktualisiert.
was moach ich hier falsch?
Meine Vermutung geht in richtung TableModelListener, aber was ich da falsch mache weis ich nicht.
hier mal der Code:
Liste:
Java:
public class DatenListe<T> {
private T[] array;
private int nextFreeSlot=0;
public DatenListe(int groese){
array =(T[]) new Object[groese];
}
public void add(T o){
if (nextFreeSlot==array.length){
throw new IllegalStateException("Liste ist voll!");
}
array[nextFreeSlot]=o;
System.out.println(o);
nextFreeSlot++;
}
public T get(int index){
return array[index];
}
public int getGroese(){
return array.length;
}
public int getElementCount(){
return nextFreeSlot;
}
}
das TableModell:
Java:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.swing.event.TableModelListener;
import javax.swing.table.TableModel;
public class DatenModell implements TableModel {
DatenListe<Daten> dl;
File dateiName = new File("y:\\Java von eee\\TabellenTest\\testDaten.txt");
BufferedReader br;
String[] z1;
String z;
int x,y;
float zz;
private List<TableModelListener> tableListener;
DatenModell() {
dl = new DatenListe<Daten>(500);
datenLaden();
}
public void datenLaden()
{
System.out.println("bin da");
// System.out.println(!(dateiName.exists()));
if (!(dateiName.exists())){
System.out.println("Dateipfad falsch");
}
System.out.println("Datei ok");
try {
FileReader fr = new FileReader(dateiName);
br = new BufferedReader(fr);
while ((z = br.readLine()) != null) {
z1 = z.split(";");
System.out.println(z);
try {
zz = Float.valueOf(z1[3]);
x=Integer.valueOf(z1[1]);
y=Integer.valueOf(z1[2]);
} catch (NumberFormatException ex) {
System.err.println("Falsches Nummernformat");
}
Daten f=new Daten(z1[0],x,y,zz);
addD(f);
}
} catch (FileNotFoundException e) {
System.out.println("Datei nicht gefunden");
e.printStackTrace();
} catch (IOException e) {
System.out.println("Ein Ausgabe fehler");
e.printStackTrace();
}
}
public void addD(Daten f){
dl.add(f);
tableListener=new ArrayList<TableModelListener>();
}
@Override
public void addTableModelListener(TableModelListener l) {
tableListener.add(l);
}
@Override
public Class<?> getColumnClass(int columnIndex) {
switch (columnIndex) {
case 0:
return String.class;
case 1:
return Integer.class;
case 2:
return Integer.class;
case 3:
return Float.class;
default:
return null;
}
}
@Override
public int getColumnCount() {
return 4;
}
@Override
public String getColumnName(int columnIndex) {
switch (columnIndex) {
case 0:
return "Artikel";
case 1:
return "Integer 1";
case 2:
return "Integer 2";
case 3:
return "Float";
default:
return null;
}
}
@Override
public int getRowCount() {
return dl.getElementCount();
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
switch (columnIndex){
case 0:return dl.get(rowIndex).text1;
case 1:return dl.get(rowIndex).zahl1;
case 2:return dl.get(rowIndex).zahl2;
case 3:return dl.get(rowIndex).zahl3;
default:return null;
}
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
// TODO Auto-generated method stub
return false;
}
@Override
public void removeTableModelListener(TableModelListener l) {
tableListener.remove(l);
}
@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
// TODO Auto-generated method stub
}
}
Kann mir vielleicht jemand helfen?
MfG Fritz