调用setVisible后未显示GWT-Bootstrap Modal

时间:2013-02-26 08:26:08

标签: gwt modal-dialog gwt-bootstrap

我想要在点击按钮时显示一个简单的模态。

这是我用来显示模态的代码

@UiHandler("submit")
void handleClick(ClickEvent e){
    ModalDialogDemo modalDialog = (ModalDialogDemo) RootPanel.get().getWidget(2);
    modalDialog.setHeight("200px");
    modalDialog.setWidth("100px");
    modalDialog.setVisible(true);
    if(modalDialog.isVisible()){
        System.out.println("Successfully Displayed the Modal!");
    }
    else{
        System.out.println("Something went wrong.");
    }
}

即使屏幕上没有显示模态,登录到控制台的消息也是前者,即成功显示模态!

我用firebug进行了一些挖掘,在点击按钮之前,渲染的HTML是

<div>
<div class="modal" style="display: none;" aria-hidden="true">
<div class="modal-header"><a class="close" data-dismiss="modal">×</a><h3>Name</h3></div>
<div class="modal-body"><div class="gwt-Label">Modal Content Comes Here</div></div>
<div class="modal-footer"><div class="gwt-Label">And this is the footer</div></div></div>
</div>

单击按钮后,它将变为

<div style="height: 200px; width: 100px;" aria-hidden="false">
<div class="modal" style="display: none;" aria-hidden="true">
<div class="modal-header"><a class="close" data-dismiss="modal">×</a><h3>Name</h3></div>
<div class="modal-body"><div class="gwt-Label">Modal Content Comes Here</div></div>
<div class="modal-footer"><div class="gwt-Label">And this is the footer</div></div></div>
</div>

第一个div具有我设置的高度和宽度,并且aria-hidden也被清除,但实际包含模态的子div不受影响。

我不知道如何告诉GWT将更改应用于子div,有人可以帮我解决这个问题吗?

编辑: 这是我的ModalDialogDemo.ui.xml

<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
    xmlns:g="urn:import:com.google.gwt.user.client.ui"
    xmlns:b = "urn:import:com.github.gwtbootstrap.client.ui">
    <g:HTMLPanel>
        <b:Modal title="VipName" backdrop="STATIC">
            <g:Label>Modal Content Comes Here</g:Label>
            <b:ModalFooter>
                <g:Label>And this is the footer</g:Label>
            </b:ModalFooter>
        </b:Modal>
    </g:HTMLPanel>
</ui:UiBinder> 

1 个答案:

答案 0 :(得分:2)

您需要在GWT-Bootstrap模式对象上调用show()方法来显示它。

<强>更新

在ui.xml文件中,为模态分配一个id。

<b:Modal title="VipName" ui:field="vipNameModel" backdrop="STATIC">

在ModalDialogDemo.JAVA文件中,获取该对象。

@UiField
    Modal vipNameModel;

创建getter方法:

Modal getVipNameModel()
{
return vipNameModel'
}

然后从ModalDialogDemo类调用modalDialog.getVipNameModel().show();