GWT中的对话框是';不可拖动或集中

GWT中的对话框是';不可拖动或集中,gwt,dialog,Gwt,Dialog,我是GWT编程新手。到目前为止,我有一个对话框,它应该收集登录名和密码,如果需要,它可以启动另一个对话框,允许某人创建一个新帐户 这两个对话框中的第一个始终显示在浏览器屏幕的左上角,不能拖动,尽管对话框的部分定义是可以拖动。但是,第二个对话框可以在屏幕上拖动,没有任何问题 我最喜欢的是第一个对话框出现在屏幕中间并且是可拖动的,这两个都是自动发生的,但是没有。 那么,什么东西可以阻止对话框被拖动呢?根面板上还没有任何内容。这有区别吗 如果代码片段有帮助的话,它们是可用的,但是对于一些指针来说,这个

我是GWT编程新手。到目前为止,我有一个对话框,它应该收集登录名和密码,如果需要,它可以启动另一个对话框,允许某人创建一个新帐户

这两个对话框中的第一个始终显示在浏览器屏幕的左上角,不能拖动,尽管对话框的部分定义是可以拖动。但是,第二个对话框可以在屏幕上拖动,没有任何问题

<>我最喜欢的是第一个对话框出现在屏幕中间并且是可拖动的,这两个都是自动发生的,但是没有。 那么,什么东西可以阻止对话框被拖动呢?根面板上还没有任何内容。这有区别吗

如果代码片段有帮助的话,它们是可用的,但是对于一些指针来说,这个概要可能就足够了

谢谢
Neil

如果看不到任何代码,就很难判断出哪里出了问题。以下代码适用于我(忽略缺少的样式…):

两个框都是可拖动的,显示在浏览器窗口的中心。

使用<代码>对话框>()/代码>这将把对话框放在屏幕中间。默认情况下,对话框通常是可拖动的

只是尝试了一下,不管你的根面板是否是空的。当我只是在ModuleLoad上显示对话框时,它是可拖动的,并且居中。问题可能出在别的地方

这就是谷歌自身的例子:

public class DialogBoxExample implements EntryPoint, ClickListener {

  private static class MyDialog extends DialogBox {

    public MyDialog() {
      // Set the dialog box's caption.
      setText("My First Dialog");

      // DialogBox is a SimplePanel, so you have to set its widget property to
      // whatever you want its contents to be.
      Button ok = new Button("OK");
      ok.addClickListener(new ClickListener() {
        public void onClick(Widget sender) {
          MyDialog.this.hide();
        }
      });
      setWidget(ok);
    }
  }

  public void onModuleLoad() {
    Button b = new Button("Click me");
    b.addClickListener(this);

    RootPanel.get().add(b);
  }

  public void onClick(Widget sender) {
    // Instantiate the dialog box and show it.
    new MyDialog().show();
  }
}

关于DialogBox的更多信息。

经过大量的尝试和错误,我发现了问题所在,问题在于:我在一个基于DialogBox的名为fireEvent的对象中找到了一个方法,它如下所示:

public void fireEvent(GwtEvent<?> event)
{
    handlerManager.fireEvent(event);
}
。。。或者是这个

public void fireAnEvent(GwtEvent<?> event)
{
    handlerManager.fireEvent(event);
}
public void fireAnEvent(GwtEvent事件)
{
handlerManager.fireEvent(事件);
}
对话框是可拖动的。但是,如果方法以行开头

public void fireEvent(GwtEvent<?> event)
public void firevent(GwtEvent事件)
然后结果是一个无法拖动的对话框

我对此感到有些不安,因为我无法理解为什么我选择的方法名称会影响对话框的可拖动性,或者为什么使用基类(GwtEvent)而不是扩展它的自定义类会影响可拖动性。我怀疑像我这样天真的新手也有很多类似的陷阱


(期望对话框本身居中只是我的错误。)

看起来您正在小部件中覆盖此方法:

  public void fireEvent(GwtEvent<?> event) {
    if (handlerManager != null) {
      handlerManager.fireEvent(event);
    }
  }
public void firevent(GwtEvent事件){
if(handlerManager!=null){
handlerManager.fireEvent(事件);
}
}
在小部件中,handlerManager指的是私有handlerManager


可以将super.firevent(event)添加到您的方法中,也可以按您所做的那样重命名它。

是的,这对我也适用,我也一直在做类似的事情。我会尽量把我正在做的事情减少到最低限度,然后发布。谢谢你的帮助。是的,再一次,这很好,但是这和我所做的没有明显的区别。知道DialogBox在默认情况下是可拖动的是问题的关键,因为我不知道如何关闭这种行为,即使我愿意,但我的一个不会移动!谢谢你的回复。
public void fireEvent(GwtEvent<?> event)
  public void fireEvent(GwtEvent<?> event) {
    if (handlerManager != null) {
      handlerManager.fireEvent(event);
    }
  }