当前位置: 首页 > 知识库问答 >
问题:

如何更改SWT Table项目选择背景颜色

施飞雨
2023-03-14

我有一个这里提到的类似用例。我想将SWT表格项目选择背景颜色从默认的灰色或蓝色更改为其他颜色。我尝试使用StyledCellLabelProvider#update方法,但没有用。它只是将所有表项的背景色更新为给定的颜色。但我需要它只用于选定的项目。下面是我的标签提供程序更新方法的代码段

@Override
public void update(ViewerCell cell) {
    cell.setText(provider.getDisplay((T) cell.getElement(), cell.getColumnIndex()));
    TableItem currentTableItem = ((TableItem) cell.getViewerRow().getItem());
    if (currentTableItem.getParent().getSelectionCount() > 0) {
        TableItem selectedTableItem = currentTableItem.getParent().getSelection()[0];
        if(currentTableItem == selectedTableItem) {
            cell.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_LIST_SELECTION));            
        }
    }
    cell.setForeground(provider.getDisplayColor((T) cell.getElement(), cell.getColumnIndex()));
    super.update(cell);
}

提前感谢您的帮助!

共有1个答案

微生昌胤
2023-03-14

选择颜色通常由操作系统选择,因此要更改颜色,必须关闭StyledCellLabelProvider、erase、measure和paint方法中的selected标志。您还必须使用擦除方法自己绘制所选颜色。

类似于以下内容:

  @Override
  protected void erase(final Event event, final Object element)
  {
    if ((event.detail & SWT.SELECTED) != 0) {
      event.detail &= ~SWT.SELECTED;
  
      Rectangle bounds = event.getBounds();

      event.gc.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_LIST_SELECTION));
   
      event.gc.fillRectangle(bounds);
    }

    super.erase(event, element);
  }

  @Override
  protected void measure(final Event event, final Object element)
  {
    event.detail &= ~SWT.SELECTED;

    super.measure(event, element);
  }

  @Override
  protected void paint(final Event event, final Object element)
  {
    event.detail &= ~SWT.SELECTED;

    super.paint(event, element);
  }
 类似资料:
  • 我有一个选择框,当选择框被单击并显示所有选项时,我正在尝试更改选项的背景颜色。

  • 问题内容: 我试图更改选项菜单的默认颜色为白色:我希望选项菜单上的每个项目都为黑色背景。 我已经尝试过在菜单元素中的item元素上进行类似android:itemBackground =“#000000”的拍摄,但是没有用。 我该怎么做? 问题答案: 在花费了大量时间尝试所有选项之后,我能够使用更改溢出菜单背景的应用程序的唯一方法是使用属性: ``` 从API 4.2到5.0进行了测试。

  • 问题内容: 我有一个框,当单击框并显示所有选项时,我正在尝试更改选项的背景色。 HTML: CSS: 问题答案: 你需要把对标签,而不是标签… 如果要为每个标签设置样式,请使用css 选择器:

  • 我有一个清单,我在回收商的视图中展示了这一点 一些项目有蓝色背景和其他项目有灰色背景 我想编辑所选项目背景(所选项目表示已单击的项目) 这是我的适配器类

  • 我正在使用浮动操作按钮,我想更改背景颜色。 这是我的密码 下面是我用来尝试实现这一点的代码: 我也得到我的FAB的角落,如图所示。我应该如何消除那些角落的阴影?

  • 问题内容: 我已经将JOptionPane添加到我的应用程序中,但是我不知道如何将背景颜色更改为白色? 问题答案: 通过使用类 要么