WebTableHeader表头样式设置

本文最后更新于:5 个月前

获取表头

1
2
3
4
WebTable table = new WebTable();
// table.xxx() table相关设置
// 获取表头 ↓↓
WebTableHeader tableHeader = table.getTableHeader();

自定义painter类

setHeaderHeight,setTopBgColor,setBottomBgColor,setGridColor新增set方法,方便调用动态变更颜色,重写paintCell方法可以设置表头单元格样式包括收个单元格设置成复选框等,需求是设置表头颜色所以此处只做了表头颜色边框等相关的set方法来方便外部调用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
public class CustomTableHeaderPainter<C extends JTableHeader, U extends WTableHeaderUI> extends TableHeaderPainter<C, U> {

/**
* 设置行高
*
* @param headerHeight 行高
*/
public void setHeaderHeight(int headerHeight) {
this.headerHeight = headerHeight;
}

/**
* 由上自下渐变色 上颜色
*
* @param topBgColor {@link Color}
*/
public void setTopBgColor(Color topBgColor) {
this.topBgColor = topBgColor;
}

/**
* 由上自下渐变色 下颜色
*
* @param bottomBgColor {@link Color}
*/
public void setBottomBgColor(Color bottomBgColor) {
this.bottomBgColor = bottomBgColor;
}

/**
* 表头边框颜色
*
* @param gridColor {@link Color}
*/
public void setGridColor(Color gridColor) {
this.gridColor = gridColor;
}

/**
* 重写paintCell方法
*/
@Override
protected void paintCell ( final Graphics2D g2d, final C c, final Rectangle rect, final int columnIndex, final TableColumn column,
final TableColumn draggedColumn, final TableColumnModel columnModel )
{
// 表格参考
final JTable table = c.getTable ();

// 复杂的检查,以确定在什么情况下应该涂抹尾部边界
// 可以为中间的列、被拖动的列或当表格小于视口时绘制。
final JScrollPane scrollPane = SwingUtils.getScrollPane ( table );
final boolean paintTrailingBorder = scrollPane != null && ( column == draggedColumn ||
table.getAutoResizeMode () == JTable.AUTO_RESIZE_OFF && scrollPane.getViewport ().getWidth () > table.getWidth () ||
( ltr ? columnIndex != columnModel.getColumnCount () - 1 : columnIndex != 0 ) );

// 左侧边框
if ( ltr || paintTrailingBorder )
{
g2d.setColor ( gridColor );
g2d.drawLine ( rect.x - 1, rect.y + 2, rect.x - 1, rect.y + rect.height - 4 );
}

// 绘制拖动的单元格渲染器
final WebLabel headerRenderer = ( WebLabel ) getHeaderRenderer ( columnIndex );
headerRenderer.setStyleId(StyleId.label);
headerRenderer.setOpaque ( false );
headerRenderer.setEnabled ( table == null || table.isEnabled () );
rendererPane.paintComponent ( g2d, headerRenderer, component, rect.x, rect.y, rect.width, rect.height, true );

// 右侧边框
if ( !ltr || paintTrailingBorder )
{
g2d.setColor ( gridColor );
g2d.drawLine ( rect.x + rect.width - 1, rect.y + 2, rect.x + rect.width - 1, rect.y + rect.height - 4 );
}
}

}

设置自定义样式

设置边框,背景渐变色

1
2
3
4
5
6
7
8
9
CustomTableHeaderPainter<WebTableHeader, WebTableHeaderUI> painter = new CustomTableHeaderPainter<>();
// 设置行高
painter.setHeaderHeight(table.getRowHeight() + 10);
// 设置渐变色,由上到下
painter.setTopBgColor(Color.BLUE);
painter.setBottomBgColor(Color.CYAN);
// 设置边框颜色
painter.setGridColor(Color.BLACK);
tableHeader.setCustomPainter(painter);

WebTableHeader表头样式设置
https://crudclass.github.io/2023/04/05/Java/Swing/WebLaf-UI/WebTableHeader/
作者
Zero
发布于
星期三, 四月 5日 2023, 10:00 晚上
更新于
2023年4月5日
许可协议