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的代码应该很简单,例如:
但是,如何获取每个类的默认CellRenderer并以这种方式扩展它呢?
先感谢您!
(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;
};