GWT:屏蔽小部件

时间:2012-03-26 11:29:36

标签: gwt popup mask masking

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

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)

弹出式面板并没有完全出现在小部件上,而是出现在小部件下方并且稍微向左移动。我希望它完全出现在小部件上。知道如何去做吗?

目前正在使用gwt 2.4.0

enter image description here

2 个答案:

答案 0 :(得分:0)

我首先建议不要使用这种方法,因为它不是标准的GUI实践,所有输入小部件都可以让你在它们上面调用setEnabled(false)以防止用户输入。

答案 1 :(得分:0)

解决方案很简单......不需要弹出面板。只需更改禁用状态并在掩码上将背景颜色变为灰色并启用它,在取消屏蔽时重新应用样式