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