Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #20821

Re: Generic JList and ListCellRenderer?

Path csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!eternal-september.org!feeder.eternal-september.org!mx04.eternal-september.org!.POSTED!not-for-mail
From Knute Johnson <nospam@knutejohnson.com>
Newsgroups comp.lang.java.programmer
Subject Re: Generic JList and ListCellRenderer?
Date Sun, 30 Dec 2012 08:29:22 -0800
Organization A noiseless patient Spider
Lines 67
Message-ID <kbpq52$f1f$2@dont-email.me> (permalink)
References <kbkqb6$uu3$1@dont-email.me> <rb6dnQdbEIzQlULNnZ2dnUVZ8oGdnZ2d@bt.com>
Mime-Version 1.0
Content-Type text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding 7bit
Injection-Date Sun, 30 Dec 2012 16:29:22 +0000 (UTC)
Injection-Info mx04.eternal-september.org; posting-host="9b3fcb0d22708969e4dc99e7aa0ef1f9"; logging-data="15407"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19M5ejR6FsLL2QXYs/LkOBm"
User-Agent Mozilla/5.0 (Windows NT 5.1; rv:17.0) Gecko/17.0 Thunderbird/17.0
In-Reply-To <rb6dnQdbEIzQlULNnZ2dnUVZ8oGdnZ2d@bt.com>
Cancel-Lock sha1:HtKKU+veCvtxXShozuxe6WDdl78=
Xref csiph.com comp.lang.java.programmer:20821

Show key headers only | View raw


On 12/29/2012 7:11 AM, Chris Uppal wrote:
> Knute Johnson wrote:
>
>> I've been trying to clean up some really old code and I've hit some
>> snags.  I've got several modified JLists and the ListCellRenderers for
>> them and thought it would make sense to have generic classes that could
>> be extended for different data types that need to be displayed.  The
>> example below displays InetAddresses in the JList.  I've got another
>> implementation of JList that does a lot more than what this one does but
>> I wanted to keep this example simple and focus on the ListCellRenderer.
>
> Without knowing what directions you intend/expect to extend the code it's a
> little difficult to make sensible suggestions.
>
> So, proceeding with due absence of sense...
>
> I don't see what the clazz variable (and the associated instance checks) are
> buying you.  You could try removing them and see if that makes your code come
> to life.  It would certainly remove some of the "kludgy" smell.
>
> If that doesn't help, then it may be that you're being bothered by the way that
> ListCellRenderer has (so to speak) too many responsibilities -- it's
> simultaneously about /how/ something is displayed and about /what/ is
> displayed.
>
> So (this is only my guess, of course) you're being pulled in two directions: on
> the one hand your /how/ is pretty much fixed and you want to use nice generic
> code for it whatever the types of the values, but the /what/ is not generic and
> will change according to each application.  You are being required to do
> rampant subclassing of something that shouldn't /need/ subclassing.
>
> If that sounds as if it might relate to your problem, you could introduce a new
> kind of object who's only responsibility is to take a value, the element of the
> List (of type Object -- unless you want to mess with generics), and return a
> String which is to be the contents of the cell.  It might also have a parallel
> method which takes the (same) List element and returns an Icon (or null).
>
> The new object would have appropriate subclasses for InetAddress etc.  (which
> might or might not appear formally as separate classes in your source -- you
> could instead use anonymous classes to make the getTextFor() and getIconFor()
> methods "pluggable").
>
> So then you have just one subclass of ListCellRenderer which holds an instance
> of [a subclass of] this new class (instead of the clazz variable), and which
> always blindly uses that to "fetch" the appropriate String and/or Icon for use
> for each cell.
>
> It's difficult to think of a good name for the new kind of object (and it's
> subclasses), but in this case I don't think that's the danger sign it normally
> would be: the reason that it's difficult to find a name is that the obvious
> names (some variant on "Renderer") are already taken.  "TextSupplier" perhaps
> (or ContentSupplier, or ContentTranslator) ?
>
> It could well be that this kind of picture is over-engineered for your purposes
> (I can't tell).  But even if it is, then the real culprit is the Swing
> architecture which is under-engineered (here), so something may be needed to
> compensate.
>
>      -- chris
>
>

Thanks Chris.

-- 

Knute Johnson

Back to comp.lang.java.programmer | Previous | NextPrevious in thread | Find similar | Unroll thread


Thread

Generic JList and ListCellRenderer? Knute Johnson <nospam@knutejohnson.com> - 2012-12-28 11:01 -0800
  Re: Generic JList and ListCellRenderer? "John B. Matthews" <nospam@nospam.invalid> - 2012-12-28 20:56 -0500
    Re: Generic JList and ListCellRenderer? Knute Johnson <nospam@knutejohnson.com> - 2012-12-30 08:27 -0800
  Re: Generic JList and ListCellRenderer? "Chris Uppal" <chris.uppal@metagnostic.REMOVE-THIS.org> - 2012-12-29 15:11 +0000
    Re: Generic JList and ListCellRenderer? Knute Johnson <nospam@knutejohnson.com> - 2012-12-30 08:29 -0800

csiph-web