This question already has an answer here:
Coloring particular rows according to the first column values in JTable?

(1个答案)


5年前关闭。





我使用一个大的JTable,并且我想为每个类扩展CellRenderer,因此每一行都有一个灰色的Background,以使其更具可读性。

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

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

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

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


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

先感谢您!

最佳答案

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

07-25 23:35
查看更多