GWT:屏蔽小部件

GWT:屏蔽小部件,gwt,popup,mask,masking,Gwt,Popup,Mask,Masking,我想屏蔽一个小部件。所以我用了一个弹出面板来做同样的事情 public class MyMask extends PopupPanel { public MyMask () { super(); } public void showAbsolute( UIObject uiObject ) { show(); setPopupPosition( uiObject.getAbsoluteLeft(), uiObject.getAbsoluteTop() ); } } 我

我想屏蔽一个小部件。所以我用了一个弹出面板来做同样的事情

public class MyMask extends PopupPanel
{
public MyMask ()
{
    super();
}

public void showAbsolute( UIObject uiObject )
{
    show();
    setPopupPosition( uiObject.getAbsoluteLeft(), uiObject.getAbsoluteTop() );
}
}

我的面具课是这样的

public final class Mask
{
private static MyMask mask = new MyMask();
private static UIObject object;

private Mask()
{
}

public static void enable( UIObject uiObject )
{
    VerticalPanel vp = new VerticalPanel();
    vp.setVerticalAlignment( HasVerticalAlignment.ALIGN_MIDDLE );
    vp.setStyleName( "mask" );
    vp.setHeight( uiObject.getOffsetHeight() + Unit.PX.getType() );
    vp.setWidth( uiObject.getOffsetWidth() + Unit.PX.getType() );
    mask.add( vp );
    mask.showAbsolute( uiObject );
}

public static void disable()
{
    mask.hide();
}
}
但是打电话

Mask.enable(widget)
弹出面板并没有完全出现在小部件上方,而是出现在小部件下方,稍微向左。我希望它准确地显示在小部件上。你知道怎么做吗

Am目前正在使用gwt 2.4.0


首先,我建议不要使用这种方法,因为这不是标准的GUI实践,所有输入小部件都允许您在它们上调用setEnabledfalse以防止用户输入。

解决方案很简单。。。不需要弹出面板。只需将其更改为禁用状态,并将遮罩上的背景色变为灰色,然后启用它,在取消遮罩时重新应用样式

您可以发布遮罩面板的屏幕截图吗?我发布了屏幕截图。我遇到了一种情况,需要采取以下方法。。。如果你有任何想法,请分享。我认为浏览器窗口的水平和垂直滚动量可能与此有关。检查Window.getScrollLeft和Window.getScrollTop的值。我想你必须用这些值来调整面板的坐标。可惜。。。如果面板的“关闭”像素数一致,则可以使用样式属性调整其位置,即移动边距,直到其正确定位。不过有一点小技巧:使用firebug检查浏览器输出并实际查看应用了哪些css属性也很好。祝你好运