2013-07-09 18 views
0

我需要一個可以放置Widget的列。 我有這樣的:自定義gxt可能需要Widget的單元格

import com.google.gwt.cell.client.AbstractCell; 
import com.google.gwt.safehtml.shared.SafeHtmlBuilder; 
import com.google.gwt.user.client.ui.Widget; 

public class WidgetGridCell extends AbstractCell<Widget> { 

    Widget widget; 

    public WidgetGridCell(Widget widget) { 
     this.widget = widget; 
    } 

    @Override 
    public void render(Context paramContext, 
      Widget param, SafeHtmlBuilder pb) { 

    } 
} 

但我不知道如何在HTML中包括

附:小部件或者不是Widget,只有GWT Button才適合我。

回答

3

請參閱here瞭解AbstractCell實現的多個示例。

要回答你關於GWT按鈕問題:

import com.google.gwt.cell.client.AbstractCell; 
import com.google.gwt.safehtml.shared.SafeHtmlBuilder; 
import com.google.gwt.user.client.ui.Widget; 

public class WidgetGridCell extends AbstractCell<Widget> { 

    Widget widget; 

    public WidgetGridCell(Widget widget) { 
     this.widget = widget; 
    } 

    @Override 
    public void render(Context paramContext, 
      Widget param, SafeHtmlBuilder pb) { 
    Button aButton = new Button(); 
    // add text to the button, etc... 
    pb.append(SafeHtmlUtils.fromTrustedString(aButton.toString())); 
    } 
} 

這在很大程度上是不可行的(不建議),試圖呈現一個電池元件中的整個部件,但它聽起來好像你真的想渲染單元格內的按鈕。

AbstractCell是Cell接口的實現,它允許您定義要在單元格內呈現的HTML。如果您需要一個可響應事件的按鈕,您需要定義自定義單元格以處理瀏覽器事件(如單擊事件)。 Google在自定義單元格的文檔方面做得很好,解釋瞭如何做到這一點。

請參閱此鏈接:http://www.gwtproject.org/doc/latest/DevGuideUiCustomCells.html

+0

在按鈕之類的小部件上調用'toString()'之前仔細考慮 - 如果稍後調用'aButton.setText',它將不起作用,並且不會調用任何Click處理程序。這不是一個好主意,不應該受到鼓勵。 –

+0

是沒有調用的點擊處理程序。 我該如何使它工作? – L00der

+0

@ColinAlworth - 是的,我同意這一點,但我盡我所能直接回答這個問題。但你的觀點很好,我也不會推薦這種方法。 –

0

我有添加小部件到小區的職位。看一看,看看它是否可以幫助你。

http://mpickell.com/blog/2013/01/28/widgets-in-gwt-cell-tables/

像科林說,將不會被使用在小部件上的變化,除非該控件的HTML被再次推到了頁面。我在這篇文章的評論中有一些筆記,你也可以在某些方面處理事件。閱讀評論,看看如何使用我在帖子中的課程。

科林還說,在這裏,要小心,並確保你明白你在做什麼,以及小部件在頁面中如何實際上並沒有附加到它的HTML中。

順便說一句..你提到你想要一個按鈕。爲什麼不使用GWT ButtonCell