TableModel

OliW

Aktives Mitglied
ein schönen guten Abend,

kann mir evtl jemand bei einem Problem helfen? Wahrscheinlich übersehe ich nur etwas, komme aber seit Stunden nicht drauf.

Ich schreibe gerade an einem ersten eigenen Projekt für eine Lagerverwaltung.
Hierzu habe ich folgendes Model erstellt :

Code:
public class LagerPosList<L> implements TableModel{
    
    List<L> liste;
    
    public LagerPosList () {
        
        liste = new ArrayList<L> ();
        
    }
    
    public L get (int i) {
        return liste.get(i);
    }
    
    public void add (L l) {
        liste.add(l);
    }
......

hier kommen jetzt die zu überschreibenden Methoden aus dem Interface "TableModel" .

und hier komme ich nicht weiter

Code:
@Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        
        L pos = get(rowIndex);
        
        switch (columnIndex) {
            case 1 : return pos.   
        }
        
    }

Eigendlich sollte ich doch mit der Variable pos auf das Objekt in der "liste" mit dem Index (rowIndex) zugreifen können.
So hatte ich vor zu schreiben:

case 1: return pos.getBestellnummer;
case 2: return pos.getLagerplatz;
usw.

Ich habe allerdings mit der Referenz pos keinen Zugriff auf das Objekt.

Ich denke, die Erfahrenen hier sehen das Problem sofort.

vielen Dank

Oli
 

mihe7

Top Contributor
Mal abgesehen davon, dass pos.getBestellnummer kein Methodenaufruf ist: zur Übersetzungszeit ist der Typ L dem Compiler nicht bekannt. Daher kannst Du auch nicht die Methoden einer bestimmten Klasse aufrufen.

Entweder implementierst Du das TableModel für diese spezielle Klasse, oder Du verlangst, dass L Subtyp dieser Klasse ist oder Du verwendest Reflection.

EDIT: auch eine Möglichkeit, wäre die Verwendung eines Mappers.
 

OliW

Aktives Mitglied
Mal abgesehen davon, dass pos.getBestellnummer kein Methodenaufruf ist: zur Übersetzungszeit ist der Typ L dem Compiler nicht bekannt. Daher kannst Du auch nicht die Methoden einer bestimmten Klasse aufrufen.

Entweder implementierst Du das TableModel für diese spezielle Klasse, oder Du verlangst, dass L Subtyp dieser Klasse ist oder Du verwendest Reflection.

EDIT: auch eine Möglichkeit, wäre die Verwendung eines Mappers.

Hab das jetzt so geändert. Bringt aber trotzdem nichts.
Die Klasse ist "Lagerposition"

Code:
public class LagerPosList<Lagerposition> implements TableModel{

Oder meintest Du, ich sollte das TableModel direkt in der Klasse "Lagerposition" implementieren?
 

mihe7

Top Contributor
public class LagerPosList<Lagerposition> implements TableModel{
Damit benennst Du nur den Typparameter in Lagerposition um :)

Java:
public class LagerPosList<L extends Lagerposition> implements TableModel {

Wäre eine Möglichkeit oder eben direkt in der Klasse LagerPosList
Java:
private List<Lagerposition> liste;

Die Frage wäre halt, ob bzw. warum die LagerPosList generisch sein soll.
 

OliW

Aktives Mitglied
Damit benennst Du nur den Typparameter in Lagerposition um :)

Java:
public class LagerPosList<L extends Lagerposition> implements TableModel {

Wäre eine Möglichkeit oder eben direkt in der Klasse LagerPosList
Java:
private List<Lagerposition> liste;

Die Frage wäre halt, ob bzw. warum die LagerPosList generisch sein soll.

Das wars. Danke. LagerPosList muß nicht wirklich generisch sein. Somit habe ich den Typparameter entfernt und es läuft .
Auch wenn mir noch nicht ganz einleuchtet, weshalb der Typparameter in der Klassendeclaration gestört hat.
Wo liegt den der Unterschied zwischen

Code:
public class LagerPosList <L extends Lagerposition> implements Table Model

und

Code:
public class LagerPosList <Lagerposition> implements Table Model

Aber erstmal läuft das und ich komme weiter. Danke dafür.

v.d.
 
K

kneitzel

Gast
Dieses <Lagerliste> sagt, dass Du ein Generics Namens Lagerliste haben willst. Es ist also ein neuer Name für ein Generics und hat nichts mit der Klasse Lagerliste zu tun.
Also du bennenst den Generic, X, Y, Otto, Lagerliste, MeinCoolerGeneric, .... Vollkommen egal und unabhängig von existierenden Klassen.

<T extends Lagerliste> besagt, dass du ein Generics mit Namen T haben willst, der aber von Lagerliste erben muss. Macht natürlich nur ein, wenn es Du Klassen von Lagerliste geben soll...
 

OliW

Aktives Mitglied
AAh OK verstehe. Also im ersten Fall <Lagerliste> ist das nur eine Definition , heißt aber noch nicht, daß ich von Lagerliste erbe.

vielen Dank
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
padde479 Zeile entfernen TableModel Java Basics - Anfänger-Themen 11
E JTable + TableModel updaten? Java Basics - Anfänger-Themen 1
M TableModel Hintergrundfarbe Java Basics - Anfänger-Themen 6
GianaSisters Methoden eigenes TableModel -> removeRow möglich machen Java Basics - Anfänger-Themen 30
E Tablemodel füllen..mit gefilterten Daten Java Basics - Anfänger-Themen 2
K keine Reaktion im TableModel nach ändern der liste? Java Basics - Anfänger-Themen 2
K funktioniert in einem TableModel ein Initialisierungsblock? Java Basics - Anfänger-Themen 3
W Problem mit Serialisierung und TableModel Java Basics - Anfänger-Themen 3
J JTable aktualisieren wenn TableModel sich ändert Java Basics - Anfänger-Themen 6
Z TableModel Methode setValueAt Java Basics - Anfänger-Themen 9
w0ddes ImageIcon in Objektarray (TableModel) einfügen. Java Basics - Anfänger-Themen 7
babel TableModel Java Basics - Anfänger-Themen 28
C eigenes TableModel Java Basics - Anfänger-Themen 2
W Innerhalb TableModel auf aktivierte Reihe reagieren Java Basics - Anfänger-Themen 3
B JTable- TableModel und TableCellRenderer Konflikt Java Basics - Anfänger-Themen 4
J Vector - JTable - TableModel Java Basics - Anfänger-Themen 14
G TableModel Java Basics - Anfänger-Themen 7
M TableModel befüllen Java Basics - Anfänger-Themen 14
Q Eigenes TableModel - NullPointerException Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben