[Biojava-l] Re: Sensible toString() methods

Michael L. Heuer heuermh@acm.org
Wed, 27 Feb 2002 13:05:10 -0500 (EST)


Mark Schreiber wrote:

> Is it possibly time to change some of the toString() methods to give
> more informative values (rather than a hashcode?).
>
> I say this because I was making a GUI using a JTree to display nested
> Features. JTree automatically names nodes by their toString method. When
> I tried to be cunning by returning the getName() method of a sequence as
> a node I ran into the problem that my TreeModel, which was set up to
> test for the number of leaves etc by first determining if the node was
> an instanceof a FeatureHolder, sadly gave up the Ghost.
>
> Many such MCV components use the toString method so now that BioJava is
> more mature I think we should fix this up.

Actually a better design in this case, for gui work, is to create custom
renderer components for biojava objects.

For example, in a JTree that views features, use

class FeatureTreeCellRenderer extends DefaultTreeCellRenderer {

  public Component getTreeCellRendererComponent(JTree tree, Object value, ...) {

    JLabel l = (JLabel) super.getTreeCellRendererComponent(tree,value,...);
    Feature f = (Feature) value;

    l.setText(f.getName());

    return l;
  }
}

JTree tree = new JTree();
tree.setCellRenderer(new FeatureTreeCellRenderer());

or something similar.

   michael