tags:

views:

34

answers:

2

HI ,

I have my on custom cell renderer and want to remove the border of the cell. how can i do it ? I tried setBorder but it doesnt work. Here is my renderer code

public class MyTableCellRenderer extends DefaultTableCellRenderer  {

private static final long serialVersionUID = -1195682136616306875L;

public Component getTableCellRendererComponent(JTable table, Object value,
        boolean isSelected, boolean hasFocus, int row, int column) {
    Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
    if(!isSelected){
        if(row %2 ==0 && row != 1){
            c.setBackground(new Color(255,255,150));
        }   else{
            c.setBackground(Color.WHITE);
        }
    }else{
        c.setBackground(new Color(255,230,255));
    }
    c.setBorder(BorderFactory.createEmptyBorder(0,0,0,0));
    return c;
}

}
A: 

I don't know how your code compiles since only Swing components can have a Border and the Component class doesn't have a setBorder() method.

When I override the default renderer I use something like:

Class CustomRenderer extends DefaultTableCellRenderer
{
    public Component getTableCellRendererComponent(
        JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
    {
        super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
        this.setBorder (BorderFactory.createBevelBorder (EtchedBorder.RAISED));
        return this;
    }
}
camickr
I am able to set all type of Borders except the emptyBorder.
harshit
And what do you expect to see when you use an EmptyBorder? How do you know its not working. It works fine for me, the text is up against the left edge instead of being indented by 1 pixel because of the default Border.
camickr
+1  A: 

The lines drawn between cells are not part of the cells themselves. They are drawn by the table. You can turn them off for the entire table with:

table.setShowHorizontalLines(false);
table.setShowVerticalLines(false);

Or, you can change the color with

table.setGridColor(...)
Devon_C_Miller
setShowXX() worked for me thanks.
harshit