我是SWT的新手,我正在尝试在偶数行和奇数行上创建一个不同颜色的Java SWT表(例如:第一行是红色,第二行是蓝色,第三行是res,第四行是蓝色......)
由于可以删除表上的行,因此如果我通过使用for循环手动设置颜色,那么我将不得不一次又一次地运行该循环,以便在每次表中发生更改时设置颜色。而且我不想使用JFace,只需要纯Java SWT 你有没有更好的解决方案来解决这个问题?
答案 0 :(得分:2)
您可以使用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 );
}
}
} );