【问题标题】:gwt dialogbox won't movegwt 对话框不会移动
【发布时间】:2012-03-14 19:19:22
【问题描述】:

我在 gwt 应用程序中使用 uiBinder 创建了一个对话框,它工作正常,只是它不能四处移动。我不知道它有什么问题,我必须设置标题才能移动它吗?

这是我的代码: myDialog.ui.xml

  <g:HTMLPanel ui:field="_glossaryPanel">
   <div class="dialogBox">
     <h3>content goes here..</h3>
     <p>More content...</p>
   </div>
  </g:HTMLPanel>

myDialog.java

公共类 MyDialog 扩展 DialogBox {

private static MyDialogUiBinder uiBinder = GWT.create(MyDialogUiBinder.class);

interface MyDialogUiBinder extends UiBinder<Widget, MyDialog> {
}

public MyDialog() {
    setWidget(uiBinder.createAndBindUi(this));
    this.setModal(true);
    this.setAutoHideEnabled(true);
}

FooterView.java

public class FooterView extends Composite implements FooterPresenter.Display {

    interface Binder extends UiBinder<Widget, FooterView> {
    }
    private static final Binder BINDER = GWT.create(Binder.class);

    @UiField
    Anchor _glossary;

    @UiHandler("_glossary")
    public void handleGlossaryClick(ClickEvent event) {
        MyDialog mDialog = new MyDialog();
        mDialog.setGlassEnabled(true);
        mDialog.setAnimationEnabled(true);
        mDialog.center();
        mDialog.show();
    }

【问题讨论】:

    标签: gwt dialog


    【解决方案1】:

    http://gwt.google.com/samples/Showcase/Showcase.html#!CwDialogBox 你必须使用DialogBox(不是PopupPanel)来移动东西。

    编辑:

    我试过你的代码,它对我有用。您是否尝试过单击边框(不是内容!)来拖动对话框?

    【讨论】:

    • 那么请发布您的完整课程。否则很难猜出可能出了什么问题...
    【解决方案2】:

    GWT 对话框不能像桌面窗口一样移动。有一个名为 gwt-windows 的计划可以让你这样做,但它已经多年没有更新了。

    【讨论】:

    • 这对于旧版本的 GWT 可能是正确的,但现在可以移动对话框(请参阅我的回答)。
    • 好的,谢谢。我看到标题栏和我的不同之处在于标题栏,所以魔术必须随之发生。
    【解决方案3】:

    也许您可以尝试在您的 ui.xml 文件中更改根元素类型

    HTMLpanelFlowPanel

    我在某个地方看到了这样的话。在哪里 ?我不记得了:-(

    在我看来,您的&lt;div clas="dialogBox"&gt; 有点令人困惑,也许您可​​以考虑将其重命名为更个人化的名称,而不是 gwt 关键字之类的名称。

    【讨论】:

      【解决方案4】:

      这是解决方案,

      VerticalPanel panel;
      DialogBox dialogbox;
      PopupPanel glass;
      VerticalPanel DialogBoxContents;
      ClickListener listener;
      HTML message;
      Button button;
      SimplePanel holder;
      
      public void demo()
      {
          // Create a panel and add it to the screen
          panel = new VerticalPanel();
          RootPanel.get("demo").add(panel);
          panel.setStyleName("table-center");
          //
          // Create a DialogBox with a button to close it
          dialogbox = new DialogBox(false);
          dialogbox.setStyleName("demo-DialogBox");
          DialogBoxContents = new VerticalPanel();
          dialogbox.setText("DialogBox");
          message = new HTML("Click 'Close' to close");
          message.setStyleName("demo-DialogBox-message");
          listener = new ClickListener()
          {
              public void onClick(Widget sender)
              {
                  dialogbox.hide();
              }
          };
          button = new Button("Close", listener);
          holder = new SimplePanel();
          holder.add(button);
          holder.setStyleName("demo-DialogBox-footer");
          DialogBoxContents.add(message);
          DialogBoxContents.add(holder);
          dialogbox.setWidget(DialogBoxContents);
          //
          // Add a button to the demo to show the above DialogBox
          listener = new ClickListener()
          {
              public void onClick(Widget sender)
              {
                  dialogbox.center();
              }
          };
          button = new Button("Show DialogBox", listener);
          panel.add(button);
      }
      

      http://examples.roughian.com/index.htm#Widgets~DialogBox查看演示

      【讨论】:

        【解决方案5】:

        “我必须设置标题才能移动它吗?” 是的。

        dialogbox.setText("对话框"); 您只能拖动 catpion div; 拖动标题 div 时,整个对话框都会移动。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-08-15
          • 2013-08-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-08
          相关资源
          最近更新 更多