Ist es möglich in einem TableModel verschiedene Objekte zu speichern und bei spätere Selektion auch wieder das richtige Objekt zurückzubekommen?
Im Folgenden speicher ich Objekte der Klasse "Artikel". Möchte aber gerne Objekte der Klassen "eBayArtikel" und "ShopArtikel" speichern. Wie lässt sich das realiseren?
Im Folgenden speicher ich Objekte der Klasse "Artikel". Möchte aber gerne Objekte der Klassen "eBayArtikel" und "ShopArtikel" speichern. Wie lässt sich das realiseren?
Java:
public class ArtikelTableModel implements TableModel{
private ArrayList<Artikel> artikelListe = new ArrayList<Artikel>();
private ArrayList listeners = new ArrayList();
/**
* Fuegt TableModel einen Artikel hinzu
* @param artikel der Artikel zum hinzufuegen
*/
public void addArtikel(Artikel artikel){
int index = artikelListe.size();
artikelListe.add(artikel);
TableModelEvent e = new TableModelEvent(this, index, index,
TableModelEvent.ALL_COLUMNS, TableModelEvent.INSERT );
// Listener benachrichtigen
for( int i = 0, n = listeners.size(); i<n; i++ ){
((TableModelListener)listeners.get(i)).tableChanged(e);
}
}
public void removeArtikel(Artikel removingArticle){
Artikel articleHelp;
int index = 0;
if(!artikelListe.isEmpty()){
for (int i=0; i<artikelListe.size(); i++){
articleHelp = artikelListe.get(i);
if(removingArticle.getArtikelID()==articleHelp.getArtikelID()){
artikelListe.remove(i);
index = i;
break;
}
}
}
// Listener benachrichtigen
TableModelEvent tme = new TableModelEvent(this, index, index, TableModelEvent.ALL_COLUMNS, TableModelEvent.DELETE);
// Das Event verschicken
for(int i = 0; i<listeners.size(); i++){
((TableModelListener)listeners.get(i)).tableChanged(tme);
}
}
/*******************************************************/
/* Ab hier die Funktionen des Interface implementieren */
/*******************************************************/
public int getRowCount() {
return artikelListe.size();
}
public int getColumnCount() {
return 5;
}
public String getColumnName(int columnIndex) {
switch(columnIndex){
case 0: return "Artikel-ID";
case 1: return "Titel";
case 2: return "Preis";
case 3: return "Anzahl";
case 4: return "Angebotstyp";
default: return null;
}
}
public Class<?> getColumnClass(int columnIndex) {
switch (columnIndex){
case 0: return Integer.class;
case 1: return String.class;
case 2: return Double.class;
case 3: return Integer.class;
case 4: return Double.class;
default: return null;
}
}
public boolean isCellEditable(int rowIndex, int columnIndex) {
return false;
}
public Object getValueAt(int rowIndex, int columnIndex) {
Artikel art = artikelListe.get(rowIndex);
switch(columnIndex){
case 0: return art.getArtikelID();
case 1: return art.getArtikelnummer();
case 2: return art.getTitel();
case 3: return art.getAnzahl();
case 4: return art.getPreis();
default: return null;
}
}
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
throw new UnsupportedOperationException("Not supported yet.");
}
public void addTableModelListener(TableModelListener l) {
listeners.add(l);
}
public void removeTableModelListener(TableModelListener l) {
listeners.remove(l);
}