1
J'ai cette classe:Comment représenter une classe complexe dans un AbstractTableModel?
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 */
}
Et j'ai écrit ce modèle de table:
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;
}
}
}
Comme vous pouvez le voir, j'ai un LinkedList<Filter>
que je voudrais aussi montrer en tant que chaîne simple. Comment puis je faire ça?
Tout d'abord, merci toi. J'ai besoin de protéger mes champs parce que c'est un cours abstrait. Comment substituer getColumnClass? Je veux dire: devrais-je retourner String.class si columnindex = 3? Ou LinkedList.class? – dierre
Ensuite, fournissez des getters protégés (et des setters si nécessaire) Quoi que getValueAt renvoie, alors String.class dans ce cas. – Puce
J'utilise des getters et des setters. Ils sont simplement laissés de côté parce que cette classe est vraiment longue. – dierre