Ограничение собственного виджета от принятия любого набора размеров в SWT

Допустим, я решил реализовать свой собственный виджет из базового класса Canvas в SWT.

Я бы хотел, чтобы он имел фиксированную высоту 10 и допускал любой тип ширины, если он соответствует кратному 10.

Есть ли способ навязать это, чтобы пользователи моего виджета могли устанавливать такие значения только при использовании моего виджета в режиме разработки?

Я пробовал искать в ControlEvent на ControlListener, но, похоже, у него нет способа отменить изменение размера.. может быть, мне нужно вручную установить его обратно на приемлемое значение, если я обнаружу ширину/высоту?

Спасибо


person devoured elysium    schedule 24.10.2012    source источник


Ответы (2)


Я могу предложить вам управлять макетом вашего виджета. Реализуйте собственный Layout с фиксированной высотой и игнорируйте любой макет, установленный пользователем.

person sambi reddy    schedule 24.10.2012

Когда вы переопределяете computeSize, просто игнорируйте подсказки ширины и высоты, если они выходят за допустимые пределы. Например:

public Point computeSize(int wHint, int hHint, boolean changed)
{
    int width, height;

    /* We can only be 10px tall */
    height = 10;

    /* Width must be at least 10px */
    if (width < 10)
        width = 10;
    /* Width must be a multiple of 10px */
    else
        width -= (width % 10);

    return new Point(width, height);
}
person Edward Thomson    schedule 24.10.2012