0

基本上我在这里尝试做的是处理点击事件,该面板应该根据点击哪个按钮来显示。例如,如果我们点击按钮一,就会弹出相应的面板。但是面板和点击事件彼此不知道任何事情。我相信它被称为匿名类。我在尝试实现这一点时遇到了麻烦。什么是实现这一点的好方法?

这是我的按钮点击事件类

public class buttonHandle extends Composite {

private static buttonHandleUiBinder uiBinder = GWT
        .create(buttonHandleUiBinder.class);
@UiField Button button;
@UiField Button button_1;

interface buttonHandleUiBinder extends UiBinder<Widget, buttonHandle> {
}
public buttonHandle() {
    initWidget(uiBinder.createAndBindUi(this));
}

@UiHandler("button")
void onButtonClick(ClickEvent event) {
}
@UiHandler("button_1")
void onButton_1Click(ClickEvent event) {
}
}

这是我每次单击按钮时都尝试添加新按钮的类

public class PanelHandle extends Composite {
private AbsolutePanel absolutePanel = new AbsolutePanel();

public PanelHandle() {

    initWidget(absolutePanel);
    absolutePanel.setSize("1027px", "636px");

    Label lblHello = new Label("Hello");
    absolutePanel.add(lblHello, 47, 80);

    Label lblHello_1 = new Label("Hello");
    absolutePanel.add(lblHello_1, 232, 249);
    // TODO Auto-generated constructor stub
}
public void buttonOne()
{
    this.absolutePanel.clear();
    Button but1 = new Button("button one");
    this.absolutePanel.add(but1);

}
}

我试过这样的东西,但它没有用新按钮更新面板

private PanelHandle pHandle = new PanelHandle();
private static buttonHandleUiBinder uiBinder = GWT
        .create(buttonHandleUiBinder.class);
@UiField Button button;
@UiField Button button_1;

interface buttonHandleUiBinder extends UiBinder<Widget, buttonHandle> {
}
public buttonHandle() {
    initWidget(uiBinder.createAndBindUi(this));
}


@UiHandler("button")
void onButtonClick(ClickEvent event) {
    Window.alert("hello buttone clicked");
    pHandle.buttonOne();


}
@UiHandler("button_1")
void onButton_1Click(ClickEvent event) {
}
}

到目前为止,我尝试在 PanelHandle 类中调用该方法,但遇到堆栈溢出等错误。在我尝试的另一种方法中,添加时无法更新面板。在我理解逻辑之前,我在这里使用按钮而不是面板来进行测试。

谢谢你的帮助!

4

1 回答 1

0

单击按钮时创建自己的 (gwt) 事件。您可以在任何地方触发自己的事件。用您需要的信息填写活动。接下来将必须处理此事件的类添加到 gwt 事件总线。如果触发了一个事件,您的句柄类将捕获该事件并使用来自该事件的数据。

这可能会有所帮助:如何使用 GWT EventBus

于 2013-07-17T19:08:50.093 回答