有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java GWT对话框从不显示帮助

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

  • A) 入口点包含复合
  • B) 复合包含显示类的按钮(在ScrollPanel中)
  • C) 类扩展了对话框

事件侦听器代码类似于

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

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

任何有用的意见都将不胜感激


共 (3) 个答案

  1. # 1 楼答案

    我想我以前也遇到过类似的问题,我所做的是在中心()之前调用show()。那会有帮助吗

  2. # 2 楼答案

    一个可能的原因是您没有向根面板添加任何内容,在这种情况下,您正在内存中创建DOM结构,但没有将其附加到任何内容:

    RootPanel.get().add(b);
    

    另一个原因是你似乎没有打电话给我。在对话框上显示方法:

    new MyDialog().show();
    

    您所描述的行为可能有几个原因,请发布完整的示例以获得更有针对性的答案

  3. # 3 楼答案

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

    如果没有警报(从未调用处理程序),则表示问题出在您的组合中。在不使用小部件的情况下将一些元素直接添加到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);
    }
    

    最后,在模块加载时:

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

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