基本上,我在这里试图做的是处理单击事件,哪个面板应该显示为取决于哪个按钮是单击。例如,如果我们单击按钮1,相应的面板将弹出。但是面板和单击事件之间不知道任何关于彼此的信息。我想这叫匿名课。我很难实现这一点。实现这一点的好方法是什么?
这是我的按钮单击事件类
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类中调用该方法,但是我遇到了类似堆栈溢出的错误。在我尝试过的另一种方法中,添加时无法更新面板。我在这里使用一个按钮,而不是面板,只是为了测试,直到我明白了逻辑。
谢谢你的帮助!
发布于 2013-07-17 19:08:50
单击按钮时创建自己的(Gwt)事件。你可以随心所欲地炒掉你自己的活动。用您需要的信息填充事件。接下来,将必须处理此事件的类添加到gwt事件总线中。如果事件被触发,您的handle类将捕获该事件并处理来自该事件的数据。
这可能会有帮助:How to use the GWT EventBus
https://stackoverflow.com/questions/17707772
复制相似问题