Roman: JList - Einem Item ein Objekt hinterlegen

Hallo,

kann man den Items einer JList ein Objekt hinterlegen, welches dann auf einfache Art und weise wieder abgefragt werden kann? Dem Item möchte ich aber trotzdem einen beliebigen Namen geben können. Ist das möglich? Wenn ja, wie?

Die JList hat z.B. ein Item, welches Vektor1 heissen soll. Hinterlegt ist diesem Item dann wirklich ein Vector, welcher z.B. nach einem Click-Ereignis ausgelesen wird.

Gruss Roman

  1. Hallo,

    kann man den Items einer JList ein Objekt hinterlegen, welches dann auf einfache Art und weise wieder abgefragt werden kann? Dem Item möchte ich aber trotzdem einen beliebigen Namen geben können. Ist das möglich? Wenn ja, wie?

    Ja.

    Die JList hat z.B. ein Item, welches Vektor1 heissen soll. Hinterlegt ist diesem Item dann wirklich ein Vector, welcher z.B. nach einem Click-Ereignis ausgelesen wird.

    JList-Items können beliebige Objekte sein. Allerdings wird für die Beschriftung des Items in der JList die toString()-Methode des Objekts herangezogen. Du kannst also nicht mit dem Vector-Objekt direkt arbeiten, sondern musst ein eigenes Objekt verwenden, welches das Vector-Objekt erweitert und dessen toString()-Methode überschreibt. Etwa so:

    ...
            MyVector v1 = new MyVector();
            v1.add("A");v1.add("B");v1.add("C");v1.add("D");
            v1.setName("Vector1 mit Strings");
            MyVector v2 = new MyVector();
            v2.add(new Integer(1));v2.add(new Integer(2));v2.add(new Integer(3));v2.add(new Integer(4));v2.add(new Integer(5));
            v2.setName("Vector2 mit Integers");
            MyVector v3 = new MyVector();
            v3.add(new GregorianCalendar(1998, Calendar.DECEMBER, 25).getTime());v3.add(new GregorianCalendar().getTime());
            v3.setName("Vector3 mit Datumswerten");

    Object[] listinhalt = {v1, v2, v3};
            JList list = new JList(listinhalt);
    ...

    class MyVector extends Vector {
            private String name="Vector";
            public void setName(String name) {
                this.name = name;
            }
            public String toString() {
                return name;
            }
            public String SupertoString() {
                return super.toString();
            }
        }

    Ergebnis ist eine JList mit folgenden Beschriftungen:

    Vector1 mit Strings
    Vector2 mit Integers
    Vector3 mit Datumswerten

    Die einzelnen Items sind Objekte vom Typ MyVector. Die Methode SupertoString() habe ich implementiert, damit man noch auf die ursprüngliche toString()-Methode der Klasse Vector zugreifen kann.

    viele Grüße

    Axel

    1. Hallo Axel!

      Vielen vielen Dank für die ausführlichen und sehr verständlichen Erklärungen!

      Gruss Roman