gpt4 book ai didi

java - GWT 对话框从不显示 - 帮助

转载 作者:行者123 更新时间:2023-12-01 15:48:20 24 4
gpt4 key购买 nike

我编写了一个测试复合+入口点,只是为了显示我的测试对话框。结构是...

  • A) EntryPoint 包含 Composite
  • B) Composite 包含 Button(在 ScrollPanel 中)以显示 A 类
  • C) 类扩展 DialogBox

事件监听器代码就像...

button.addClickHandler(new ClickHandler() { public void onClick(ClickEvent event) { DialogBox aDialog=new A(); aDialog.center(); aDialog.show(); } });

没有显示任何 doalogBox :( 我做错了什么?

任何有用的评论都会受到赞赏

最佳答案

首先尝试在 Button 的 clickHandler 中添加 Window.alert("Handler called!"); 以查看实际正在调用的处理程序。如果您看到 javascript 警报对话框(调用处理程序),则意味着问题出在您的 CustomDialogBox 中。确保通过 setWidget(Widget w) 设置对话框的内容在调用 show() 之前使其可见,否则会失败不显示。

如果没有警报(处理程序从未被调用),则意味着问题出在您的组合中。在不使用小部件的情况下直接将某些元素添加到 DOM 可能会出现问题,这会破坏 gwt 偶数机制(将解释为什么当您将按钮添加到根面板时它会起作用)。除此之外,如果不看一些代码就很难判断。

最后,我将发布一些工作代码,以防您决定从这里开始工作,看看它在哪里失败。这是一个有效的代码:

首先扩展对话框(不要忘记设置它的小部件):

public class CustomDialog extends DialogBox {
public CustomDialog() {
setWidget(new Label("Hello!"));
}
}

然后构建一个组合:

public CustomComposite() {
Button b = new Button("Pop it up");
b.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
new CustomDialog().show();
}
});
initWidget(b);
}

最后 onModuleLoad :

public void onModuleLoad() {
CustomComposite c = new CustomComposite();
RootPanel.get().add(c);
}

顺便说一句:center() 确实将弹出窗口居中,然后将 show() 居中,因此您不需要同时调用两者

关于java - GWT 对话框从不显示 - 帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6668954/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com