选择后更改jtable中行的背景颜色 [英] change background color of row in jtable after selection

查看:74
本文介绍了选择后更改jtable中行的背景颜色的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试创建一个TableCellRenderer来更改行的背景.我覆盖了prepareRenderer,它会更改所选行的背景,但是一旦更改所选内容,就会将默认背景色(白色)设置为先前选择的行,而较新的行将获得背景色(浅灰色). /p>

这是我的代码:

final JTable table = new JTable(model)
    {
            @Override
        public Component prepareRenderer(TableCellRenderer renderer,int row,int column)
        {
            Component comp=super.prepareRenderer(renderer,row, column);
           int modelRow=convertRowIndexToModel(row);
           if(!isRowSelected(modelRow))
               comp.setBackground(Color.WHITE);
           else
               comp.setBackground(Color.LIGHT_GRAY);
           return comp;
        }
    };

我的输出屏幕:

我想这样做:

解决方案

根据您的要求,您可以执行以下操作:

在模型中,保留标志值的隐藏列.假设您的隐藏列为5列,您可以编写以下代码:

final JTable table = new JTable(model)
    {
            @Override
        public Component prepareRenderer(TableCellRenderer renderer,int row,int column)
        {
            Component comp=super.prepareRenderer(renderer,row, column);
           int modelRow=convertRowIndexToModel(row);
           if((Boolean)getValueAt(row,5))
               comp.setBackground(Color.LIGHT_GRAY);
           else
               comp.setBackground(Color.WHITE);
           return comp;
        }
    };

您的标志值包含布尔对象.

I am trying to create a TableCellRenderer which changes the background of row. I am overriding the prepareRenderer, it changes the background of row on selection but as soon as I change the selection the default background color(white) is set to previous selected row and newer row gets the background color(light grey).

Here is my code:

final JTable table = new JTable(model)
    {
            @Override
        public Component prepareRenderer(TableCellRenderer renderer,int row,int column)
        {
            Component comp=super.prepareRenderer(renderer,row, column);
           int modelRow=convertRowIndexToModel(row);
           if(!isRowSelected(modelRow))
               comp.setBackground(Color.WHITE);
           else
               comp.setBackground(Color.LIGHT_GRAY);
           return comp;
        }
    };

My output screen:

I want to do like this:

解决方案

For your requirement you can do the following:

IN your model keep a hidden column of flag values. Assume that your hidden column is 5 column and you can code as below:

final JTable table = new JTable(model)
    {
            @Override
        public Component prepareRenderer(TableCellRenderer renderer,int row,int column)
        {
            Component comp=super.prepareRenderer(renderer,row, column);
           int modelRow=convertRowIndexToModel(row);
           if((Boolean)getValueAt(row,5))
               comp.setBackground(Color.LIGHT_GRAY);
           else
               comp.setBackground(Color.WHITE);
           return comp;
        }
    };

Your flag values contain the Boolean object.

这篇关于选择后更改jtable中行的背景颜色的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆