java - ListCellRenderer returning Null pointer -
this first post here apologies in advance if horrible...
i'm trying add items list of custom classes jlist using custom listcellrenderer. each has variety of things add row, new row being taken each in list:
public class matchrecord { private string player; private integer kills; private integer deaths; private integer assists;//getters + setters etc etc below}
private class gamestatistics{//this main class of program listmodel = new defaultlistmodel(); jlist.setmodel(listmodel); listmodel.clear(); //get rid of junk in list before loading recordjlist.setlayoutorientation(jlist.vertical); //add records jlist recordjlist.setcellrenderer(new recordlistrenderer()); list<matchrecord> list = new arraylist(); list.addall(recordset); //recordset set<matchrecord> has been loaded file for(int = 0; < list.size(); i++){ system.out.println(list.get(i).getplayer()); //this not null! listmodel.addelement(list.get(i)); } }
public class recordlistrenderer extends jpanel implements listcellrenderer { private jlabel[] labels = new jlabel[3]; public recordlistrenderer(){ setopaque(true); setlayout(new gridlayout(1, 4)); //set font size + colour here } public component getlistcellrenderercomponent(jlist list, object r, int index, boolean isselected, boolean hasfocus){ matchrecord record = (matchrecord) r; labels[0].settext(record.getplayer()); //this line returns null pointer labels[1].settext(record.getkills()); labels[2].settext(record.getdeaths()); labels[3].settext(record.getassists()); return this}
i sout content of list make sure not null, line highlighted above returns null pointer.
my knowledge of java still limited, (simple!) appreciated.
you initialize array of jlabel
s:
private jlabel[] labels = new jlabel[3];
but never fill array values, null
when want access them. set each element new jlabel()
, won't null
when need them.
Comments
Post a Comment