swing - Java - JScrollPane with JTable not shown -
i have jpanel add jscrollpane (see class below). added jtextfield verify works (instead of jscrollpane) , text field added panel. when try add jscrollpane nothing (white background) shown. how can fix that?
protected jpanel createcontentpanel() { jpanel panel = new jpanel(); panel.setlayout(new borderlayout()); final string[] columnnames = { "test1", "test2", "test3" }; final string[][] data = { { "foo1", "foo2", "foo3" }, { "bar1", "bar2", "bar3" }, { "bar1", "bar2", "bar3" }, { "bar1", "bar2", "bar3" }, { "bar1", "bar2", "bar3" }, { "bar1", "bar2", "bar3" }, { "bar1", "bar2", "bar3" }, { "bar1", "bar2", "bar3" } }; scrollabletable scrollabletablepane = new scrollabletable(data, columnnames); panel.add(scrollabletablepane, borderlayout.center); return panel; } public class scrollabletable extends jscrollpane { public scrollabletable(string[][] adata, string[] acolumnnames) { super(); tablemodel model = gettablemodel(adata, acolumnnames); jtable overviewtable = new jtable(model); overviewtable.setgridcolor(new color(240, 240, 240)); tablerowsorter<tablemodel> sorter = new tablerowsorter<tablemodel>(model); overviewtable.setrowsorter(sorter); this.add(overviewtable); } private tablemodel gettablemodel(string[][] adata, string[] acolumnnames) { tablemodel model = new defaulttablemodel(adata, acolumnnames) { public class<?> getcolumnclass(int column) { return getvalueat(0, column).getclass(); } }; return model; } }
to set displayed component of jscrollpane, use jscrollpane#setviewportview(component) rather add(component).
public scrollabletable(string[][] adata, string[] acolumnnames) { super(); tablemodel model = gettablemodel(adata, acolumnnames); jtable overviewtable = new jtable(model); overviewtable.setgridcolor(new color(240, 240, 240)); tablerowsorter<tablemodel> sorter = new tablerowsorter<tablemodel>(model); overviewtable.setrowsorter(sorter); this.setviewportview(overviewtable); }
Comments
Post a Comment