选择后更改jtable中行的背景颜色 [英] change background color of row in jtable after selection
问题描述
我正在尝试创建一个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屋!