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


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

Re: Generic JList and ListCellRenderer?

From "John B. Matthews" <nospam@nospam.invalid>
Newsgroups comp.lang.java.programmer
Subject Re: Generic JList and ListCellRenderer?
Date 2012-12-28 20:56 -0500
Organization The Wasteland
Message-ID <nospam-49C732.20563528122012@news.aioe.org> (permalink)
References <kbkqb6$uu3$1@dont-email.me>

Show all headers | View raw


In article <kbkqb6$uu3$1@dont-email.me>,
 Knute Johnson <nospam@knutejohnson.com> 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.

Good use of a class literal as runtime type token:

<http://docs.oracle.com/javase/tutorial/extra/generics/literals.html>

> MyListCellRenderer extends the getListCellRenderer method of 
> DefaultListCellRenderer and adds a new method, textToDisplay().  I 
> added a field to the constructor that specifies the class of the data 
> element to be displayed.  That class information is the test to make 
> the call to the textToDisplay() method.  The 
> InetAddressListCellRenderer class extends MyListCellRenderer to get 
> this to display nice neat Strings for the InetAddresses.
> 
> I think this whole thing is a little kludgie.  I've been playing with 
> it for so long now I'm not getting anywhere anymore.  I was hoping 
> somebody would say "gee you ought to go this way" or "no that is 
> really brilliant code my man!" and I'll leave it as is :-).
> 
> Anyway, please take a look and if you have any great ideas, I would 
> appreciate the feedback.

Some suggestions:

Use the @Override annotation.

Use the for-each (Iterable) loop in setListData():

@Override
public void setListData(Vector<? extends E> v) {
    model.clear();
    for (E e : v) {
        model.addElement(e);
    }
}

Consider supporting List:

public void setListData(List<? extends E> v) {
    model.clear();
    for (E e : v) {
        model.addElement(e);
    }
}

Catch the more specific exception:

catch (UnknownHostException e)

-- 
John B. Matthews
trashgod at gmail dot com
<http://sites.google.com/site/drjohnbmatthews>

Back to comp.lang.java.programmer | Previous | NextPrevious in thread | Next 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