Java SWT - 在偶数行和奇数行上创建一个具有不同颜色的纯SWT表

时间:2015-08-06 15:14:39

标签: swt

我是SWT的新手,我正在尝试在偶数行和奇数行上创建一个不同颜色的Java SWT表(例如:第一行是红色,第二行是蓝色,第三行是res,第四行是蓝色......)

由于可以删除表上的行,因此如果我通过使用for循环手动设置颜色,那么我将不得不一次又一次地运行该循环,以便在每次表中发生更改时设置颜色。而且我不想使用JFace,只需要纯Java SWT 你有没有更好的解决方案来解决这个问题?

1 个答案:

答案 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 );
    }
  }
} );