On Tue, 26 Nov 2002 18:27:01 +0100
Lars Dam <larsdam___YeahNoUnderscores_____@______post2.tele.dk> wrote:
> On 26 Nov 2002 02:14:56 -0800
> ottesen@sol.dk (ottesen) wrote:
>
> > Hej!
> > I en JList listes de enkelte objekter via deres toString() metode. Men hvis
> > jeg nu har 2 JList's som hver især skal vise nogle forskellige oplysninger
> > for den samme gruppe objekter - hvordan gør jeg så det? Jeg kan jo ikke lave
> > 2 forskellige toString() metoder da toString()-metoden jo kaldes som default
> > og ikke er en jeg kalder "manuelt".
>
> To umiddelbare muligheder:
>
> 1) Lav en CellRenderer til hver type.
Det skal lige siges at jeg ville nok foretrække en variant af denne løsning:
class MyCellRenderer implements ListCellRenderer{
ListCellRender original=null;
public MyCellRenderer(ListCellRender original){
this.original = original;
}
public Component getListCellRendererComponent(
JList jlist,
Object value,
int index,
boolean isSelected,
boolean cellHasFocus){
String presentation = ((ObjectType)value).getOtherDataThanToString();
return original.getListCellRendererComponent(
jlist,
presentation,
index,
isSelected,
cellHasFocus;
}
}
Aktiver den på flg. måde:
somejlist.setCellRenderer( new MyCellRenderer( somejlist.getCellRenderer()));
>
> 2) Lav en wrapper klasse, som du bruger til objekter i een af listerne.
>
> class Wrapper{
> SomeObject someObject;
> public Wrapper( SomeObject someObject ){
> this.someObject = someObject;
> }
> public String toString(){
> return someObject.getAValue();
> }
> }
>
> > Håber jeg har formuleret mig nogenlunde tydeligt
> >
> > /ottesen
>
> vh. ld