2013-03-12 122 views
0

我按照這個帖子上的指示 ImageButton in gwt 創建我自己的圓形按鈕,它看起來很像視覺。 我現在想要做的是爲這個新類添加點擊處理程序。我怎麼去解決這個問題?我是否需要兩個圖像的點擊處理程序,以及標籤?我必須做什麼才能使用CSS配置此組件?用GWT創建一個圓形按鈕

這是我的代碼到目前爲止。

public class RoundButton extends Composite 
    { 
     protected final Label textHolder = new Label("helasdfasdf"); 
     protected final Image leftSide = new Image("/icons/left.ico"); 
     protected final Image rightSide = new Image("/icons/right.ico"); 
     protected final HorizontalPanel contentTable; 

     public RoundButton() 
     { 
      contentTable = new HorizontalPanel(); 
      initWidget(contentTable); 
      contentTable.add(leftSide); 
      contentTable.add(textHolder); 
      contentTable.add(rightSide); 
     } 

     public void setText(String text) 
     { 
      textHolder.setText(text); 
     } 
    } 

回答

1

爲了使您的RoundButton的更standartized我將實現com.google.gwt.event.dom.client.HasClickHandlers接口,並添加點擊事件全您的組件(即包裝部件):

public class RoundButton extends Composite implemens HasClickHandlers 
{ 
    protected final Label textHolder = new Label("helasdfasdf"); 
    protected final Image leftSide = new Image("/icons/left.ico"); 
    protected final Image rightSide = new Image("/icons/right.ico"); 
    protected final HorizontalPanel contentTable; 

    public RoundButton() 
    { 
     contentTable = new HorizontalPanel(); 
     initWidget(contentTable); 
     contentTable.add(leftSide); 
     contentTable.add(textHolder); 
     contentTable.add(rightSide); 
    } 

    public void setText(String text) 
    { 
     textHolder.setText(text); 
    } 


    public HandlerRegistration addClickHandler(ClickHandler handler) 
    { 
     return addDomHandler(handler, ClickEvent.getType());   
    } 

} 
+0

乾杯,我該如何使用CSS進行配置。我嘗試了一個公共setMyHeight(int height),它將設置每個子組件的高度,然後嘗試查看是否執行.round {myHeight:10; }在CSS中會做任何事情,但它不起作用。我是否試圖做一些沒有道理的事情? – MayoMan 2013-03-12 12:10:56

+0

事實上,你的CSS不會是正確的。 Gwt幾乎不會爲CSS樣式表添加任何附加屬性(sprite和contansts除外),所以對於css,您應該完全依賴css標準。所以基本上,如果你不開發一個庫,你可能會爲你的項目定義一個CSS樣式表,你可以在其中定義所有的樣式。在小部件中,您可以使用'setStyleName'方法來應用它們。 – 2013-03-12 12:25:12

+0

所以我只需要清楚,我知道將樣式應用於我的新類的最佳/正確方法是將樣式應用於構成它的各個組件。 – MayoMan 2013-03-12 13:59:12

0

你能趕上在複合這樣的點擊次數:

public RoundButton() 
{ 
    ... 
    sinkEvents(Event.ONCLICK); 
} 

@Override 
public void onBrowserEvent(Event event) 
{ 
    super.onBrowserEvent(event); 
    if (DOM.eventGetType(event) == Event.ONCLICK) 
    { 
     ... 
    } 
}