-1

ListGrid在仪表板布局上显示了一个。在少数情况下,我需要显示我们通常使用的 Notes 消息SC.say()

但我设计了自己的画布来显示所有此类消息,并将其放置在父仪表板上。

现在需要在 Listgrid 组件上发生某些操作时显示消息。该窗口设置为模态,因此我的 Notes Canvas 显示但被仪表板布局掩盖。

我想在没有遮罩的情况下显示画布?

我怎样才能做到这一点来显示没有蒙版的画布和 ListGrid 显示?

![在此处输入图像描述][1] 这是实际发生的情况,因为窗口设置为 isModal(true) 和 setModalMask(true),我知道它是可选的,但在我们的项目中是必需的,但现在我只需要带上黄色画布消息显示为正常突出显示,而不是刚刚显示的蒙版

public class GetMessageDialogBox extends Canvas 
{
    private GetMessageDialogBox(String messageText)
{
    mainLayout = new GetHorizontalLayout("100%", "40", null, 0, 5, null);

    btnClose = new GetImgButton(16, 16, "Red_Square_Close.png");
    btnClose.setVisible(true);
    btnClose.setShowTitle(true);

    btnClose.addClickHandler(new ClickHandler() 
    {           
        @Override
        public void onClick(ClickEvent event) 
        {
            setAnimateTime(1000);
            animateMove(10 , Window.getClientHeight());
            isVisibleMessageStatus = false;
            setVisible(false);
        }
    }); 

    displayLabel = new GetLabel(messageText,"messageLabelDialogText");
    displayLabel.setBackgroundColor("yellow");
    displayLabel.setHeight100();
    displayLabel.setWidth100();
    displayLabel.setValign(VerticalAlignment.CENTER);
    mainLayout.addMember(new Canvas(){{
        setWidth("50%");
    }});
    mainLayout.addMember(displayLabel);
    mainLayout.addMember(new Canvas(){{  
        setWidth("20%");
    }});
    mainLayout.addMember(btnClose);

    setParentElement(StaticInfo.mainDashboardLayout);
    setVisible(true);
    setHeight(40);
    setBackgroundColor("yellow");
    setBorder("1px solid black");
    setLeft(10);  
    setTop(Window.getClientHeight()-40);
    setShowShadow(true);
    setShadowOffset(5);
    setShadowSoftness(5);
    setAnimateTime(100);
    timer.schedule(5000);
    addChild(mainLayout);
    customMask.show();
    bringToFront();
    show(); 
}
}

现在这个 Message 组件在演示者文件中被调用。

customMask.show();
winLoadList.bringToFront();
winLoadList.show();

上面的代码用于列表网格,因为我需要显示的是未屏蔽但现在当我调用消息组件时,我还需要使用以下代码显示消息组件未屏蔽,但所有三个浏览器都提供不同的 o/p。

customMask.show();
GetMessageDialogBox.getInstance(messages.LoadPresenter_NoRecordSelected()).bringToFront();
GetMessageDialogBox.getInstance(messages.LoadPresenter_NoRecordSelected()).show();
4

1 回答 1

1

你有很多方法可以实现这一目标。

我认为最简单的方法是尝试调用bringToFront()你的黄色画布。

这段代码可以工作,但是,当您移动窗口时,黄色画布会落在后面:

Window window = new Window();
window.setIsModal(true);
window.setWidth(800);
window.setHeight(500);
window.setAutoCenter(true);
window.setShowModalMask(true);

window.show();

final HLayout message = new HLayout();
message.setWidth(400);
message.setHeight(30);
message.addMember(new Label("hey you"));

message.setBackgroundColor("yellow");

message.bringToFront();
message.show();

尽管使用setModal(true),您可以自己制作模态掩码,因此您可以处理所有事情(也许有更好的解决方案)。

代码 :

public class BusyMask extends VLayout
{
    public BusyMask()
    {
    RootPanel.get().add(this);
    hide();
    setOpacity(50);
    setBackgroundColor("#000000");
    setPositionAndSizes();
    this.getParentElement().addResizedHandler(
        new ResizedHandler()
            {

                @Override
                public void onResized(ResizedEvent event)
                {
                    setPositionAndSizes();

                }
            });
    }

@Override
public void show()
{
    this.bringToFront();
    super.show();
}

@Override
public void hide()
{
    super.hide();
}

protected void setPositionAndSizes()
{
    setWidth100();
    setHeight100();

    setLeft(0);
    setTop(0);
}
}

你在ListGrid显示方法中使用它,当显示它时:

busyMask.show();
bringToFront();
super.show();
于 2012-06-05T08:24:32.273 回答