【问题标题】:Setting swt table column foreground color设置 swt 表列前景色
【发布时间】:2025-12-08 10:15:01
【问题描述】:

有没有办法设置 SWT 表格列的前景和/或背景颜色?或 SWT 表格标题的前景和背景颜色? org.eclipse.swt.widgets.TableColumn

上没有 setForeground/setBackground 方法

【问题讨论】:

    标签: java colors swt


    【解决方案1】:

    没有。无法在 TableColumn 上设置背景/前景(取决于本机支持)。您可能必须自己自定义绘制标题。 使默认标题不可见并在单独的画布中绘制您自己的标题,您需要使其与TableColumnTable 的滚动保持同步。

    org.eclipse.swt.widgets.Table.setHeaderVisible(boolean)
    

    【讨论】:

      【解决方案2】:

      TableItem 中有 setBackground()setForeground() 方法。

      如果您希望能够更有效地自定义项目,我建议您改用TableViewer

      Here 是一个带有样式示例的优秀教程。


      以下是带有彩色列的简单Table 的一些示例代码:

      public static void main(String[] args)
      {
          Display display = new Display();
          final Shell shell = new Shell(display);
          shell.setText("*");
          shell.setLayout(new FillLayout());
      
          Table table = new Table(shell, SWT.NONE);
          table.setHeaderVisible(true);
      
          for(int col = 0; col < 3; col++)
          {
              TableColumn column = new TableColumn(table, SWT.NONE);
              column.setText("Column " + col);
          }
      
          Color color = display.getSystemColor(SWT.COLOR_YELLOW);
      
          for(int row = 0; row < 10; row++)
          {
              TableItem item = new TableItem(table, SWT.NONE);
      
              for(int col = 0; col < 3; col++)
              {
                  item.setText(col, "Item " + row + " Column " + col);
      
                  if(col == 1)
                  {
                      item.setBackground(col, color);
                  }
              }
          }
      
          for(int col = 0; col < 3; col++)
          {
              table.getColumn(col).pack();
          }
      
          shell.pack();
          shell.open();
          while (!shell.isDisposed())
          {
              if (!display.readAndDispatch())
                  display.sleep();
          }
          display.dispose();
      }
      

      【讨论】:

      • TableItems 是表格的行。设置背景/前景色不会设置表格标题前景色/背景色
      • @ChandrayyaGK 您要求提供 OR 列标题的背景。使用TableItem 的方法可以为整列着色(您不必为整行着色),除了标题,它是一个操作系统组件(所以我怀疑它可以着色)。跨度>
      • @ChandrayyaGK Here 是关于标题颜色的错误报告。
      • 是的,我问过关于设置表头前景背景颜色的问题。我看到了这个错误,但是很久没有更新这个错误了。有什么解决方法吗?
      • @ChandrayyaGK 还有两个错误报告 herehere 表明这是不可能的。