java - Separator between header and data in a JTable -
i build simple jtable has no gridlines apart single horizontal separator between table header , table data. separator should span entire width of table jseparator. have managed achieve desired appearance using jlabels , jseparator placed within gridbaglayout, result unwieldy , can't feel more concise solutions exist (perhaps using matteborder?). appreciated!
edit: solution can achieved using single line of code:
table.gettableheader().setborder(new matteborder(0,0,1,0, color.black));
you did similar:
create tablecellrenderer.
tablecellrenderer renderer = new defaulttablecellrenderer() { final jlabel headerlabel = new jlabel(); { //setborder(borderfactory.createemptyborder()); headerlabel.setborder(borderfactory.creatematteborder(0, 0, 3, 0, color.red)); headerlabel.setopaque(true); headerlabel.setbackground(color.white); } @override public component gettablecellrenderercomponent(jtable table, object value, boolean isselected, boolean hasfocus, int row, int column) { if (row == -1) { label.settext(value.tostring()); return headerlabel; } return super.gettablecellrenderercomponent(table, value, isselected, hasfocus, row, column); } };
use table header (row == -1). 1 used cells.
for (int = 0; < model.getcolumncount(); ++i) { table.gettableheader().getcolumnmodel().getcolumn(i).setheaderrenderer(renderer); }
either use
table.showhorizontallines(false); table.showverticallines(false);
or
table.setgridcolor(color.white);
i use cell renderer header, following might suffice:
defaulttablecellrenderer renderer = new defaulttablecellrenderer(); renderer.setborder(borderfactory.creatematteborder(0, 0, 3, 0, color.red)); renderer.setopaque(true); renderer.setbackground(color.white);
Comments
Post a Comment