-1

ListGridダッシュボード レイアウトに表示されます。ほとんどの場合、通常は を使用して Notes メッセージを表示する必要がありますSC.say()

しかし、そのようなメッセージをすべて表示するように独自のキャンバスを設計し、これを親ダッシュボードに配置しました。

Listgrid コンポーネントで何らかのアクションが発生したときにメッセージを表示する必要がある場合。ウィンドウはモーダルに設定されているため、ノート キャンバスは表示されますが、ダッシュボード レイアウトでマスクされます。

Canvas をマスキングせずに表示したいのですが?

マスクなしで 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(); 
}
}

これで、このメッセージ コンポーネントがプレゼンター ファイルで呼び出されます。

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

上記のコードは、マスクを解除して表示する必要があるため、リストグリッドに使用されますが、次のコードでメッセージコンポーネントをマスク解除して表示する必要があるため、メッセージコンポーネントを呼び出すと、3つのブラウザーすべてが異なる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それを表示するときに、show メソッドでそれを使用します。

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