1

ユーザーのClickHandlerをボタンの状態を制御するボタンで装飾するボタンがあります->クリックすると無効になり、複数のクリックを防ぎます。ユーザーがそれをクリックすると、対応するDialogBoxが開き、ボタンが無効になります。これが私のボタンです:

public class MyButton extends Button {
    private boolean isButtonClicked = false;
    private ClickHandler clickHandler;

    public MyButton(String html) {
        this(html, null);
    }

    public MyButton(String html, final ClickHandler handler) {
        super(html);
        addClickHandler(handler);
    }

    public HandlerRegistration addClickHandler(final ClickHandler handler) {
        clickHandler = handler;

        ClickHandler ch = new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
                if(!isButtonClicked) {
                    isButtonClicked = true;
                    setEnabled(false);
                    clickHandler.onClick(event); //Here is a click handler initiated on fly
                }
            }
        };
        return super.addClickHandler(ch);
    }
}

そして、これはそれがどのように使用されるかです:

public TestClass {
    protected OneClickButton button = new OneClickButton("Test Button);

    //...

    button.addClickHandler(new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
                SomeDialogWindow dialog = new SomeDialogWindow(/*args*/);
                dialog.center();
            }
        });
}

ボタンをクリックすると無効になり、ダイアログが表示されます。しかし、ダイアログを閉じると、ボタンは無効のままになります。ダイアログを閉じるときにボタンを有効に戻す方法を設定しますか?これを達成するために、どのようなイベントをどこで処理する必要がありますか?

4

1 に答える 1

1

SomeDialogWindowがDIalogBoxを拡張する場合、これを行うことができます

dialog.addCloseHandler(new CloseHandler<PopupPanel>() {
public void onClose(com.google.gwt.event.logical.shared.CloseEvent<PopupPanel> event) {
             yourbutton.setEnabled(true);           

                            };
                        });
于 2013-03-25T14:10:58.593 に答える