GWT: маскировка виджета - PullRequest
0 голосов
/ 26 марта 2012

Я хочу замаскировать виджет.Поэтому я использовал всплывающую панель, чтобы сделать то же самое

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 голосов
/ 11 апреля 2012

Решение простое ... Не нужно всплывающей панели.Просто измените его отключенное состояние и включите цвет фона на серый на маске и включите его, повторно примените стиль на unmask

0 голосов
/ 26 марта 2012

Во-первых, я бы советовал не использовать этот подход, поскольку он не является стандартной практикой графического интерфейса пользователя, и все виджеты ввода позволяют в любом случае вызывать setEnabled(false) для них, чтобы предотвратить ввод пользователя.

...