java - How to re-apply or re-render my JTable after editing the JTable's JSpinner cell -


i have problem on applying defaulttablerenderer jtable set contain jspinner , jcombobox through use of defaultcelleditors

i have created simple defaulttablerenderer checks if there's duplicate time or invalid time value shown below.

public class scheduletablecellrenderer extends defaulttablecellrenderer {      @override     public component gettablecellrenderercomponent(             jtable table, object value,             boolean isselected, boolean hasfocus,             int row, int col) {          component cellcomponent = super.gettablecellrenderercomponent(table, value, isselected, hasfocus, row, col);          object starttimevalue = table.getmodel().getvalueat(row, 1);         object endtimevalue = table.getmodel().getvalueat(row,2);         if(starttimevalue!= null && endtimevalue != null &&                  starttimevalue.tostring().equals(endtimevalue.tostring()) ){             system.out.print("start time: "+starttimevalue+", ");             system.out.println(endtimevalue+"\n");             cellcomponent.setbackground(color.red);             ((jlabel)cellcomponent).setforeground(color.white);         }          if(row%2 == 0){             cellcomponent.setbackground(color.cyan);             ((jlabel)cellcomponent).setforeground(color.black);         }         else{             cellcomponent.setbackground(color.white);             ((jlabel)cellcomponent).setforeground(color.black);         }          return cellcomponent;     }  } 

i'd color rows red if user selects time duplicate or conflict another. the rendering or changing of row color must occur after user selects time , moves next column.

i have tried re-apply defaultrenderer refresh row colors if starttime equals endtime it's not working. guess i'm doing wrong.

enter image description here

i have attempted re-apply renderer created when jspinner's state changed no luck.

public class scheduletimecelleditor extends defaultcelleditor {     private final jspinner spinner;     private final spinnerdatemodel spinnerdatemodel;           public scheduletimecelleditor(jtable jtblschedule) {             super(new jtextfield());             this.jtblschedule = jtblschedule;             spinnerdatemodel = new spinnerdatemodel();             spinner.addchangelistener(new changelistener() {             @override             public void statechanged(changeevent e) {                 jtblschedule.setdefaultrenderer(new scheduletablecellrenderer);             }         });     } } 

what simplest way can achieve this.

i'd appreciate help.

thank you.


Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -