swing - Java tree nodes from enum values -


i populate jtree nodes enum values. nodes display in uppercase text. undesirable nodes display in lower case.

example:

public enum daysoftheweek {            monday("monday", "mon", "first day of work week."),      //etc ...        private final string fullname;       private final string abbrvname;       private final string description;        daysoftheweek(string fullname, string abbrvname, string description) {           this.fullname = fullname;          //etc ...       }        public string getfullname() {           return fullname;       }   } 

i have tried:

list<defaultmutabletreenode> daysofweeknodes = new arraylist<>();    for(daysoftheweek dotw : daysoftheweek.values()) {            daysofweeknodes.add(new defaultmutabletreenode(dotw.getfullname()));           daysofweeknodes.get(dotw.ordinal()).setuserobject(dotw);   } 

the node displays as: monday want display as: monday

text based graphic example:

days       |       ---monday       |       ---tuesday 

not

days       |       ---monday       |       ---tuesday   

how tree node associated enum value, text on tree use full name string? or in other words, how set tree node user object have name different?

*note - easy fix go against convention , name values how want them displayed in tree, not uppercase.

you need use treecellrenderer.

here 1 way implement this:

import java.awt.component;  import javax.swing.jframe; import javax.swing.jlabel; import javax.swing.jscrollpane; import javax.swing.jtree; import javax.swing.swingutilities; import javax.swing.tooltipmanager; import javax.swing.tree.defaultmutabletreenode; import javax.swing.tree.defaulttreecellrenderer; import javax.swing.tree.defaulttreemodel;  public class testtree {      public enum daysoftheweek {          monday("monday", "mon", "first day of work week."), tuesday("tuesday", "tue", "second day of work week");         // etc ...          private final string fullname;         private final string abbrvname;         private final string description;          private daysoftheweek(string fullname, string abbrvname, string description) {             this.fullname = fullname;             this.abbrvname = abbrvname;             this.description = description;         }          public string getfullname() {             return fullname;         }          public string getabbrvname() {             return abbrvname;         }          public string getdescription() {             return description;         }     }      public class mytreecellrenderer extends defaulttreecellrenderer {          @override         public component gettreecellrenderercomponent(jtree tree, object value, boolean sel, boolean expanded, boolean leaf, int row,                 boolean hasfocus) {             component cell = super.gettreecellrenderercomponent(tree, value, sel, expanded, leaf, row, hasfocus);             if (value instanceof defaultmutabletreenode && ((defaultmutabletreenode) value).getuserobject() instanceof daysoftheweek) {                 ((jlabel) cell).settext(((daysoftheweek) ((defaultmutabletreenode) value).getuserobject()).getfullname());             }             return cell;         }     }      private jframe f;     private jtree tree;      protected void initui() {         defaultmutabletreenode root = new defaultmutabletreenode("days");         (daysoftheweek dotw : daysoftheweek.values()) {             root.add(new defaultmutabletreenode(dotw));         }         final defaulttreemodel model = new defaulttreemodel(root);         tree = new jtree(model);         tree.setrootvisible(true);         tree.setshowsroothandles(true);         tooltipmanager.sharedinstance().registercomponent(tree);         tree.setcellrenderer(new mytreecellrenderer());         f = new jframe();         f.setdefaultcloseoperation(jframe.exit_on_close);         f.setlocationrelativeto(null);         f.add(new jscrollpane(tree));         f.pack();         f.setvisible(true);     }      public static void main(string[] args) {          swingutilities.invokelater(new runnable() {              @override             public void run() {                 new testtree().initui();             }         });     }  } 

take @ jtree tutorial.


Comments

Popular posts from this blog

php - Why I am getting the Error "Commands out of sync; you can't run this command now" -

linux - Does gcc have any options to add version info in ELF binary file? -

java - Are there any classes that implement javax.persistence.Parameter<T>? -