java - Change Icon dynamically in JTable -


i have jtable jlabel show given picture if person approved(or failed) in test.i use renderer:

public  class testcellrenderer extends jlabel implements tablecellrenderer {          list<student> list=null;   public testcellrenderer(list<student> l){       super();       this.list=l;        }       @override   public component gettablecellrenderercomponent(jtable table, object object,boolean isselected, boolean hasfocus, int row, int column) {             student s=list.get(row);           if(s.getpoints()>=90){                   seticon(new imageicon(getclass().getresource(okay_path)));}           else if(s.getpoints()<90){               seticon(new imageicon(getclass().getresource(error_path)));          }                                }                  sethorizontalalignment(jlabel.center);                 return this;       } }//end renderer   

it works flawless until have edit student in jtable row.i open screen contents of row edition.of course, table model dont show value, jlabel show picture.but in edit frame, have box values.i tried update after choose value dont works(off course, if close main frame , open imagem showed modified, need show rows updated after close edit frame(note: other fields change in edit frame updates, less jlabel).i tried in mymodel(just relevant parts):

studenttablemodel extends abstracttablemodel{  public void setvalueat(object avalue, int rowindex, int columnindex) {   student s=students.get(rowindex);  //...many cases    case grade_point: s.setgrade((jlabel)avalue);    firetablecellupdated(rowindex, columnindex); // notify update } public void setdata(list<student> list){     this.students.clear();     for(student s:list){              student student=new student();               student.setid(c.getid());              //...other setters ,              student.setgradepointimage(setjlabel(s.getpoints()));              this.students.add(student);                 }     this.firetabledatachanged();  }//end set data public student getstudent(int rowindex){   student s=students.get(rowindex);   student student=new student()   //setters  return student; } public jlabel setjlabel(int value){         jlabel l=new jlabel();              if(value>=90)            l.seticon(new imageicon(getclass().getresource("...successpath")));              else if(value<90)            l.seticon(new imageicon(getclass().getresource("...failedpath")));          return l;   } }//end studenttablemodel 

i have mainframe table(and respective rows showed), , editframe, displayed if user clicks twice in row.everything works fine picture update.oh, in editframe:

    if (arg0.getsource() == exitdialog) {            model.setdata(mylist);            model.firetabledatachanged();          dispose();//clear editframe        }//it should update after editframe closed.   

it updates icon.what can update icon? best regards,


Comments

Popular posts from this blog

c# - How Configure Devart dotConnect for SQLite Code First? -

java - Copying object fields -

c++ - Clear the memory after returning a vector in a function -