Zeilenhöhe in einer JList dynamisch anpassen

Hi!

Ich suche mir jetzt seit Stunden die Finger wund, komme aber irgendwie auf keine Lösung.

Ich habe folgendes vor:
Ich habe eine JList inklusive Einträge. (Done)
Wenn ich einen Eintrag anklicke, soll die Zeile farbig hinterlegt werden. (Done)
Darüberhinaus soll weiterer Text in die Zeile eingefügt werden. (Done.)

Jetzt entsteht das Problem: Die Zeilenhöhe muss an den neuen Text angepasst werden, da dieser immer unterschiedlich sein kann. (Sehr kurzer oder auch sehr langer Text).

Ich habe folgenden ListCellRenderer (nur die relevante Methode):

 public Component getListCellRendererComponent(JList list, Object feed,
 int index, boolean isSelected, boolean cellHasFocus) {

 JLabel lbl = (JLabel) super.getListCellRendererComponent(list, feed, index, isSelected, cellHasFocus);
 RssItem item = (RssItem) feed;
 if (isSelected) {
 setBackground(Color.ORANGE);
 setForeground(list.getForeground());
 setText(""+item.toString()+"

"+item.getContent()+""); 
 } else {
 setBackground(list.getBackground());
 setForeground(list.getForeground());
 setText(item.toString());
 }
 setEnabled(list.isEnabled());
 setFont(list.getFont());
 if(list.getSelectedIndex() == index){
 int newSize = 45; // 

**Hier implementiere ich den ListSelectionListener, um die Liste zu "refreshen":** 



    
    ...
    
    listNews = new JList(listRssModel);
     listNews.setCellRenderer(new RssItemListCellRenderer());
     listNews.setSelectionMode(ListSelectionModel.SINGLE\_SELECTION);
     listNews.addMouseListener(this);
     listNews.addListSelectionListener(new ListSelectionListener(){
     public void valueChanged(ListSelectionEvent lse){
    // if(lse.getValueIsAdjusting() == false) listNews.setCellRenderer(new RssItemListCellRenderer());}});//reset
     //this block comes from this recent post, and would be better
     //http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get\_topic&f=2&t=006729
     //comment out the above reset line, and uncomment this block
     if(lse.getValueIsAdjusting() == false)
     {
     for(int x = 0; x 
    
    Mögliche Lösungsansätze von mir (leider ohne irgendwas gefunden zu haben):
     - Es muss doch ne Möglichkeit geben, das die JList automatisch die Höhe anpasst? Es gibt ja die Werte fixedCellHeight bzw -width. Ich dachte wenn ich die mit -1 belege, berechnet er die Höhe automatisch. Leider nicht. Gibts da noch was?
     - Man könnte die Zeilen im Label zählen und daraus die neue Höhe errechnen
     - Man könnte mit der Höhe, der Weite und der Länge des Textes irgendwie darauf kommen, aber so kompliziert kann/darf es nicht sein
    
    Falls ihr noch Fragen zur Problemstellung habt, dann haut in die Tasten. Ich suche derweil weiter nach ner Lösung.
    
    MfG Hendrik