0

gwtのこの投稿ImageButtonの指示に従って 、独自の丸みを帯びたボタンを作成しました。視覚的には問題ないように見えます。私が今やりたいのは、この新しいクラスのクリックハンドラーを追加することです。どうすればこれに取り組むことができますか?画像とラベルの両方にクリックハンドラーが必要ですか?次に、CSSを使用してこのコンポーネントを構成するにはどうすればよいですか?

これが私のこれまでのコードです。

    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);
        }   
    }
4

2 に答える 2

1

RoundButton をより標準化するには、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());         
    }  

}
于 2013-03-12T11:39:39.727 に答える
0

次のように、コンポジットのクリックをキャッチできます。

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

@Override
public void onBrowserEvent(Event event)
{
    super.onBrowserEvent(event);
    if (DOM.eventGetType(event) == Event.ONCLICK)
    {
        ...
    }
}
于 2013-03-12T11:39:30.307 に答える