JTable - 扩展默认的CellRenderer

时间:2014-08-12 09:21:48

标签: java swing jtable tablecellrenderer

我使用了一个很大的JTable,我想为每个Class扩展CellRenderer,所以每个第二行都有一个灰色背景,以使它更具可读性。

每隔一行的灰色背景应如下所示: http://i61.tinypic.com/of3sky.png

但我仍然想要每个Class的默认对齐方式以及isSelected和hasFocus的默认设置。

背景的代码应该很简单,例如:

if(row % 2 == 0){
            super.setBackground(new Color(200, 200, 200));
        }
        else{
            super.setBackground(Color.WHITE);
        }

但是如何为每个Class获取默认的CellRenderer,并以这种方式扩展它?

提前谢谢!

1 个答案:

答案 0 :(得分:1)

来自JTable Alternate Row Background

  

要使JTable以不同颜色呈现每一行,您只需扩展JTable的prepareRender方法。

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;
};