swing - Java - Custom JTabel show weird text -
i making application show data. won't. show weird string
, said jeremy.itemsdata@33f1ca93
, table cell show jeremy.itemsdata@427a9389
. here code. got code somewhere , modify because dont want application that.
public class jtables extends jframe { private static final long serialversionuid = 7866940189661427857l; public jscrollpane scroll; public jtable table; private list<itemsdata> items; public jtables(list<itemsdata> i) { items = i; initgui(); } private void initgui() { items.add(new itemsdata("justtesting", null, null, null, null, null, null)); scroll = new jscrollpane(); table = new jtable(new jtablesmodel(items)); setdefaultcloseoperation(jframe.dispose_on_close); table.setdefaultrenderer(itemsdata.class, new jtablescell()); table.setdefaulteditor(itemsdata.class, new jtablescell()); table.setrowheight(292); scroll.setviewportview(table); add(scroll); pack(); } } public class jtablesmodel extends abstracttablemodel implements tablemodel { private static final long serialversionuid = 3752534513457351699l; private list<itemsdata> item; public jtablesmodel(list<itemsdata> i) { this.item = i; } @override public class<?> getcolumnclass(int columnindex) { return items.class; } @override public string getcolumnname(int column) { return "items"; } @override public boolean iscelleditable(int rowindex, int columnindex) { return true; } @override public int getcolumncount() { return 1; } @override public int getrowcount() { return (item==null) ? 0 : item.size(); } @override public object getvalueat(int arg0, int arg1) { return (item==null) ? null : item.get(arg0); } } public class jtablescell extends abstractcelleditor implements tablecelleditor, tablecellrenderer { private static final long serialversionuid = -7826925896868335289l; public jlabel data; public jlabel icon; public jlabel id; public jlabel lvl; public jlabel name; public jlabel type; public jpanel p; public jtablescell() { initgui(); } private void initgui() { p = new javax.swing.jpanel(); icon = new javax.swing.jlabel(); name = new javax.swing.jlabel(); type = new javax.swing.jlabel(); lvl = new javax.swing.jlabel(); data = new javax.swing.jlabel(); id = new javax.swing.jlabel(); name.setfont(new java.awt.font("times new roman", 0, 24)); // noi18n name.settext("name"); type.settext("type"); lvl.setfont(new java.awt.font("times new roman", 0, 14)); // noi18n lvl.settext("min lvl"); data.setfont(new java.awt.font("times new roman", 0, 14)); // noi18n data.settext("data"); id.setforeground(new java.awt.color(255, 0, 51)); id.settext("hover view identification"); javax.swing.grouplayout playout = new javax.swing.grouplayout(p); p.setlayout(playout); playout.sethorizontalgroup( playout.createparallelgroup(javax.swing.grouplayout.alignment.leading) .addgroup(playout.createsequentialgroup() .addgroup(playout.createparallelgroup(javax.swing.grouplayout.alignment.leading) .addgroup(playout.createsequentialgroup() .addgap(35, 35, 35) .addcomponent(icon, javax.swing.grouplayout.preferred_size, 64, javax.swing.grouplayout.preferred_size) .addgap(44, 44, 44)) .addgroup(javax.swing.grouplayout.alignment.trailing, playout.createsequentialgroup() .addcontainergap() .addcomponent(id) .addpreferredgap(javax.swing.layoutstyle.componentplacement.unrelated))) .addgroup(playout.createparallelgroup(javax.swing.grouplayout.alignment.leading) .addgroup(playout.createsequentialgroup() .addgroup(playout.createparallelgroup(javax.swing.grouplayout.alignment.leading) .addcomponent(type, javax.swing.grouplayout.default_size, javax.swing.grouplayout.default_size, short.max_value) .addcomponent(lvl, javax.swing.grouplayout.default_size, javax.swing.grouplayout.default_size, short.max_value) .addcomponent(data, javax.swing.grouplayout.default_size, javax.swing.grouplayout.default_size, short.max_value)) .addcontainergap()) .addgroup(javax.swing.grouplayout.alignment.trailing, playout.createsequentialgroup() .addcomponent(name, javax.swing.grouplayout.default_size, 127, short.max_value) .addgap(22, 22, 22)))) ); playout.setverticalgroup( playout.createparallelgroup(javax.swing.grouplayout.alignment.leading) .addgroup(playout.createsequentialgroup() .addgroup(playout.createparallelgroup(javax.swing.grouplayout.alignment.leading) .addgroup(playout.createsequentialgroup() .addcomponent(name) .addpreferredgap(javax.swing.layoutstyle.componentplacement.related) .addcomponent(type) .addgap(18, 18, 18) .addcomponent(lvl)) .addgroup(playout.createsequentialgroup() .addcontainergap() .addcomponent(icon, javax.swing.grouplayout.preferred_size, 64, javax.swing.grouplayout.preferred_size))) .addpreferredgap(javax.swing.layoutstyle.componentplacement.related) .addgroup(playout.createparallelgroup(javax.swing.grouplayout.alignment.baseline) .addcomponent(data) .addcomponent(id))) ); } private void update(itemsdata id, boolean isselected, jtable t) { this.name.settext(id.name); } @override public object getcelleditorvalue() { return null; } @override public component gettablecellrenderercomponent(jtable table, object value, boolean isselected, boolean hasfocus, int row, int column) { itemsdata id = (itemsdata)value; update(id, true, table); return p; } @override public component gettablecelleditorcomponent(jtable table, object value, boolean isselected, int row, int column) { itemsdata id = (itemsdata)value; update(id, isselected, table); return p; } }
i added table cell show two. have weird text on it. can improve code can work better? thanks
here solution
@override public object getvalueat(int arg0, int arg1) { return (item == null) ? null : item.get(arg0).name; }
it should
item.get(arg0).name;
instead of
item.get(arg0); // returns object itemsdata class.
you can in way overriding tostring()
method of itemsdata
class in existing code item.get(arg0);
class itemsdata{ public itemsdata(string string) { name = string; } public string name; @override public string tostring(){ return name; } }
Comments
Post a Comment