2011-02-09 192 views
4

我正在使用標準swt表,您可能知道,默認情況下,當選擇項目時爲藍色(windows標準)。當選擇無效時,它變爲淺灰色。我想重寫這兩種顏色......我在網上搜索了所有內容,但只能找到一些非常舊的代碼,它們不再適用於表格窗口小部件。swt表更改選擇項目顏色

下面是我試圖覆蓋默認的顏色一些示例代碼,但它似乎並沒有工作(請原諒骯髒的代碼,只是試圖讓一些工作):

table.addSelectionListener(new SelectionListener() { 
      @Override 
      public void widgetSelected(SelectionEvent event) { 
      Color rowSelectionColor = 
          new Color(Display.getCurrent(),new RGB(235, 200, 211)); 
          TableItem item =(TableItem)event.item; 
       item.setBackground(0,rowSelectionColor); 
       item.setBackground(1,rowSelectionColor); 
       item.setBackground(2,rowSelectionColor); 


      } 

      @Override 
      public void widgetDefaultSelected(SelectionEvent event) { 
      Color rowSelectionColor = 
          new Color(Display.getCurrent(),new RGB(235, 200, 211)); 
          TableItem item =(TableItem)event.item; 
       item.setBackground(0,rowSelectionColor); 
       item.setBackground(1,rowSelectionColor); 
       item.setBackground(2,rowSelectionColor); 


      } 
     }); 

任何想法都將被大量讚賞:D

回答

1

不知道是否有一個更簡單的方法,但你可以通過「所有者繪製」來實現。看到這個SWT Snippet。儘管如此,這有點矯枉過正。

+0

鏈接是壞的。下面是另一個:http://bingjava.appspot.com/snippet.jsp?id=2211 – 2013-03-01 22:39:39

4

如果您想使用TableViewer來管理您的表格,您可以使用StyledCellLabelProvider來確定單個單元格的顏色/字體/等。 TableViewer將爲您處理「所有者繪製」方面的問題。最大的麻煩是設置與TableViewer一起使用的ContentProvider,LabelProvider和輸入類。

+0

更多:子類StyledCellLabelProvider,重寫update(ViewerCell)方法,使用ViewerCell.getElement()獲取行元素,調用cell.setText (),並在單元格中設置顏色。 – 2013-03-01 22:42:41