Java SWT - 创建一个纯 SWT Table 在偶数行和奇数行上使用不同的颜色
Java SWT - Create a pure SWT Table with different color on even and odd rows
我是 SWT 的新手,我正在尝试创建一个 Java SWT table 在偶数行和奇数行上使用不同的颜色(例如:第一行是红色,第二行是蓝色,第三行是 res,第四行是蓝色……)。
由于 table 上的行可以删除、插入,所以如果我使用 for 循环手动设置颜色,我将不得不 运行 一次又一次地循环设置颜色table 发生了一些变化。而且我不想使用 JFace,只是纯 Java SWT
对于这个问题,你有更好的解决方案吗?
您可以使用 custom drawn table items .
通过为 SWT.EraseItem
添加侦听器,您可以只绘制背景,让其余部分执行默认实现。使用事件的 item
字段来决定是绘制偶数行还是奇数行。
例如:
table.addListener( SWT.EraseItem, new Listener() {
@Override
public void handleEvent( Event event ) {
int index = table.indexOf( ( TableItem )event.item );
if( index % 2 == 0 ) {
Color oldBackground = event.gc.getBackground();
event.gc.setBackground( event.display.getSystemColor( SWT.COLOR_DARK_YELLOW ) );
event.gc.fillRectangle( 0, event.y, table.getClientArea().width, event.height );
event.gc.setBackground( oldBackground );
}
}
} );
我是 SWT 的新手,我正在尝试创建一个 Java SWT table 在偶数行和奇数行上使用不同的颜色(例如:第一行是红色,第二行是蓝色,第三行是 res,第四行是蓝色……)。
由于 table 上的行可以删除、插入,所以如果我使用 for 循环手动设置颜色,我将不得不 运行 一次又一次地循环设置颜色table 发生了一些变化。而且我不想使用 JFace,只是纯 Java SWT 对于这个问题,你有更好的解决方案吗?
您可以使用 custom drawn table items .
通过为 SWT.EraseItem
添加侦听器,您可以只绘制背景,让其余部分执行默认实现。使用事件的 item
字段来决定是绘制偶数行还是奇数行。
例如:
table.addListener( SWT.EraseItem, new Listener() {
@Override
public void handleEvent( Event event ) {
int index = table.indexOf( ( TableItem )event.item );
if( index % 2 == 0 ) {
Color oldBackground = event.gc.getBackground();
event.gc.setBackground( event.display.getSystemColor( SWT.COLOR_DARK_YELLOW ) );
event.gc.fillRectangle( 0, event.y, table.getClientArea().width, event.height );
event.gc.setBackground( oldBackground );
}
}
} );