2012-08-16 132 views
0

我想更改gwt單元格列的背景顏色屬性。問題是這種顏色可能會在單元格的每個渲染中發生變化(背景顏色取決於單元格的值)。如何設置GWT單元格背景顏色

我已經嘗試重寫TextColumn的單元格樣式的名稱的方法如下:

@Override 
public String getCellStyleNames(final Context context, final Object data) { 
if (my_condition) return "a custom style"; 
else return "default style"; // or null... 
} 

以及你當然知道它唯一的屬性添加一個類的名字,所以我不能用它來設置由於靜態css文件定義「動態」的顏色。

Thx for ur help!

+0

你使用哪種表格? FlexTable,網格? – aymeric 2012-08-16 18:30:54

+0

這是關於CellTable的! – Fraternel 2012-08-17 09:55:33

回答

3
如果您使用的是網格,則可以使用CellFormatter。例如。 grid.getCellFormatter()。setStyleName(row,column,「dynamicStyleName」);

對於'color'屬性的動態更新,我會推薦擴展TextCell(並將它傳遞給'TextColumn'構造函數)。類似的東西:

public class CustomCell extends TextCell<String> { 

    interface Template extends SafeHtmlTemplates { 
    @Template("<div style=\"color:{0}\">{1}</div>") 
    SafeHtml div(String url, String text); 
    } 

    private static Template template; 

    public CustomCell() { 
    if (template == null) { 
     template = GWT.create(Template.class); 
    } 
    } 

    @Override 
    public void render(Context context, String value, SafeHtmlBuilder sb) { 
    String color = "red"; 
    if (value != null) { 
     // The template will sanitize the URI. 
     sb.append(template.div(color, value)); 
    } 
    } 
} 


public class CustomColumn<T> extends TextColumn<T> { 

    public CustomColumn() { 
    super(new CustomCell()); 
    } 
} 
+0

OP討論'TextColumn',所以它顯然是關於'CellTable'或'DataGrid'。 – 2012-08-16 22:20:20

+0

明白了,thx。我錯過了'TextColumn'的參考。我修改了答案。 – udalmik 2012-08-17 08:28:30

+0

準確的CellTable。而渲染方法是唯一的(也是最好的)方法來做到這一點! Thx mudalov – Fraternel 2012-08-17 09:58:08

-1

因爲你沒有給您正在使用的組件的細節,我給一個通用的建議爲試圖找出你可能需要哪些屬性一起玩。

我使用eclipse,並建議使用GWT設計器來幫助你POC的東西。它幫我拿個主意哪些屬性的,我可能要玩:

https://developers.google.com/web-toolkit/tools/download-gwtdesigner

  • 如何使用GWT設計實例

  • 相關問題