Auf Thema antworten

Ich kenne mich mit Renderern leider nicht so gut aus. Ich wollte daher erst einmal den erst Tipp von Michael... ausprobieren - aber mit Pfad links und Laufwerksbezeichung rechts (rechtsbündig).

Haber aber hier schon Probleme... Folgender Renderer ändert zwar die Umrandung der Selektierung, kann aber keinen Text ausgeben (sobald ich super.getListCell... auskommentiere, ist die Liste leer):



[code=Java]@SuppressWarnings("serial")

class ColorCellRenderer extends DefaultListCellRenderer {


    // Width doesn't matter as the combo box will size

    private final static Dimension preferredSize = new Dimension(0, 20);

   

    JLabel lblLeft  = new JLabel();

    JLabel lblRight = new JLabel();

   

   

    public ColorCellRenderer() {

        this.setLayout(new BorderLayout());

        this.add(lblLeft,  BorderLayout.CENTER);

        this.add(lblRight, BorderLayout.EAST);

        this.setPreferredSize(preferredSize);

    }

   

     

    public Component getListCellRendererComponent(JList list,

                                                  Object value,

                                                  int index,

                                                  boolean isSelected,

                                                  boolean cellHasFocus) {

   

        super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);

           

        //System.out.println((String) value);

        lblLeft.setText((String) value);

       

       

        if (value instanceof Color) {

            this.setBackground((Color) value);

        }

           

        if(cellHasFocus || isSelected){

            this.setBorder(new LineBorder(Color.ORANGE));

        } else {

            this.setBorder(null);

        }

           

        return this;

    }

}[/code]


Ich verstehe den Renderer so: es ist eine Componente, welche jeden einzelnen Listeneintrag zeichnet.

Die Item-Informationen erhält die Komponente über das ListCellRenderer-Interface (getListCellRendererComponent()).


Wenn dem so wäre, dann müsste aber [code]lblLeft.setText((String) value);[/code] doch zu eine Ausgabe führen... ???:L


Ich verstehe das nicht! :bahnhof:

Wer ist schlauer?



Oben