JList / toString modify

AdelJaha174

Mitglied
Hallo, ich habe eine Frage bezüglich des Zusammenhangs zwischen JList und toString()

Ich habe eine JList, diese nutzt ja die toString Methode der enthaltenen Objekte um den Text anzuzeigen. Allerdings ist es ja so, dass die toString Methode ausschließlich fürs Debuggen benutzt werden sollte. Wenn ich aber nun aus welchen Gründen auch immer z.B nur einen bestimmten Teil anzeigen lassen will, dann muss ich ja die toString Methode ändern.

Java:
    @Override
  public String toString(){
    return getName();
  }

In diesem Fall soll er die Variable name anzeigen lassen in der Liste. Allerdings kann ich die toString Methode dann nicht mehr für ihre ursprünglichen Funktion nutzen(debuggen), da sie mir nicht mehr alle Attribute wiedergibt.

Wäre z.B. eine 2. Methode möglich? Da ich beim Debuggen ohnehin selbst auswählen kann aus welcher Methode ich die Momentanwerte ablese.
So etwa :

Java:
    @Override
  public String toString(){
    return getName();
  }
  public String toDebug(){
    return getAge()+" "+getName()+" "+getVorname()+" "+getLieblingsfarbe();
  }

Ich habe mir auch gedacht, dass ich die JList zwinge einen anderen getter als Textquelle für die Objekte zu wählen, allerdings weiß ich nicht wie ;(, bzw. ich kenne die Methode nicht, in der sie das auswählt, die ich überschreiben muss.

Würde mich freuen wenn ihr mir helfen könntet

lg Adeljaha
 
Zuletzt bearbeitet:
Allerdings ist es ja so, dass die toString Methode ausschließlich fürs Debuggen benutzt werden sollte.
Wer sagt sowas?

Schon die Tatsache, dass die JList die toString() Methode nutzt legt ja nahe dass die Methode auch für andere Zwecke genutzt wird 😉
Laut API hat die toString() Methode folgende Funktion:
Returns a string representation of the object. In general, the toString method returns a string that "textually represents" this object. The result should be a concise but informative representation that is easy for a person to read.


Wenn du das Verhalten der JList ändern willst, dann solltest du dir einen ListCellRenderer schreiben. Da kannst du dann machen was du willst.
 

Zurück
Oben