JTable Alternate Row Background
Java tables are great but complex. The good thing about them is that you can do with them whatever you want. Even more, the view is completely separated from the model, so you can even play more.
JTables in brief (bad thing) are just a bunch of components put together. So anything you can de to a Component you can do in a JTable.
To make a JTable render each row in a different color, you just have to extend the JTable's prepareRender method.
JTable table = new JTable() {
public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
Component returnComp = super.prepareRenderer(renderer, row, column);
Color alternateColor = new Color(252,242,206);
Color whiteColor = Color.WHITE;
if (!returnComp.getBackground().equals(getSelectionBackground())){
Color bg = (row % 2 == 0 ? alternateColor : whiteColor);
returnComp .setBackground(bg);
bg = null;
}
return returnComp;
};
The above code simply gets the component that was going to be rendered and changes its background so that it
fits the user needs. Here we've just set the background using two alternate colors, but there are many more
things you can do, just use your imagination. Try using getModel(row, column)
to get the values
of what the cell contains and make the component behave depending on the values it contains.
Comments in "JTable Alternate Row Background"
* JXTable (http://swinglabs.org/)
* Renderpack Pipelines (https://srenderpack.dev.java.net/)
One can add a JXTable from SwingX a Highlighter which is describes here: http://www.javalobby.org/java/forums/t18819.html.