Hello Florian

Thank you for the constructive examples!

I looked at the usage of prototypeCellValue property,
following the JList.updateFixedCellSize() method

I found this code in the DefaultListCellRenderer.getListCellRendererComponent():


        if (value instanceof Icon) {
            setIcon((Icon)value);
            setText("");
        }
        else {
            setIcon(null);
            setText((value == null) ? "" : value.toString());
        }

It means that value always can be an icon,
so we need to do something about that

I also think that shouldn't generify prototypeCellValue,
since it doesn't give as any visible advantage,
moreover some programmers may use an object of a special type
that toString() method returns something meaningful for prototypeCellValue

Thanks
alexp

Here is a second sample.

It's not really a real-world sample, but should be useful to show that also JList of other "value" types than String, such as Integer, Long and Short, can profit from generics.

It also shows why JList should specify
ListCellRenderer<? super E> cellRenderer

rather than

ListCellRenderer<E> cellRenderer

(Here: a common Number-cell renderer is used.)

-Florian

Am Dienstag, 3. März 2009 schrieb Alexander Potochkin:
Hello Tom

It's nice to see you here

Could you please provide a complete example of a JList
with a custom ListCellRenderer that proves that renderer should be
generified
I bet if you used NetBeans to find implementations of ListCellRenderer
even within the JDK most useful implementations would cast the value
argument.
anyway, it is always better to have a fixed set of examples to discuss

(I prefer option 3, btw.)
Thanks
alexp

Tom Hawtin



Reply via email to