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