1
Ich habe diese Klasse:Wie stellt man komplexe Klassen in einem AbstractTableModel dar?
public abstract class Directory {
protected int id;
protected File path;
protected LinkedList<Filter> filters;
protected LinkedList<File> files;
protected int wildcard;
public static int numCols = 3;
/* other things */
}
Und ich diese Tabelle Modell schrieb:
public class DirectoryListTableModel extends AbstractTableModel {
private static final long serialVersionUID = 1L;
private LinkedList<Directory> datalist;
private String[] columnNames= {"ID", "Directory", "Wildcard", "Filters"};
public DirectoryListTableModel(){
}
public void setDatalist(LinkedList<Directory> temp){
this.datalist = temp;
}
public void showElement(){
fireTableRowsInserted(this.datalist.size()-2,this.datalist.size()-2);
}
public LinkedList<Directory> getDatalist(){
return (LinkedList<Directory>) this.datalist.clone();
}
@Override
public String getColumnName(int column) {
return this.columnNames[column];
}
@Override
public int getColumnCount() {
return Directory.numCols;
}
@Override
public int getRowCount() {
return this.datalist.size();
}
@Override
public Object getValueAt(int row, int col) {
Directory temp = this.datalist.get(row);
switch(col){
case 0:
return temp.getId();
case 1:
return temp.getPath();
case 2:
return temp.getWildcard();
default:
return null;
}
}
}
Wie Sie Ich habe einen LinkedList<Filter>
sehen kann, dass ich als einfacher String zeigen möchte. Wie kann ich das machen?
Zunächst einmal danke Sie. Ich brauche meine Felder geschützt, weil das eine abstrakte Klasse ist. Wie überschreibe ich getColumnClass? Ich meine: Soll String.class zurückgegeben werden, wenn Spaltenindex = 3? Oder LinkedList.class? – dierre
Dann stellen Sie geschützte Getter (und Setter, falls erforderlich) Was immer getValueAt zurückgibt, so String.class in diesem Fall. – Puce
Ich benutze Getter und Setter. Sie werden einfach weggelassen, weil diese Klasse wirklich lang ist. – dierre