Java 限制我自己的小部件在SWT中采用任何大小集

Java 限制我自己的小部件在SWT中采用任何大小集,java,canvas,widget,swt,windowbuilder,Java,Canvas,Widget,Swt,Windowbuilder,假设我已经决定从SWT中的基本画布类实现我自己的小部件 我希望它有一个固定的高度10,并允许任何类型的宽度,只要它符合10的倍数 是否有任何方法可以强制执行此操作,以便我的小部件的用户只允许在设计模式下使用我的小部件时设置此类值 我尝试在ControlListener上的ControlEvent中查找,但它似乎没有取消调整大小的方法。。如果我检测到宽度/高度,可能必须手动将其设置回可接受的值 谢谢我可以建议您控制小部件的布局。使用固定高度实现自己的布局,并忽略用户设置的任何布局。当覆盖计算时,如

假设我已经决定从SWT中的基本画布类实现我自己的小部件

我希望它有一个固定的高度10,并允许任何类型的宽度,只要它符合10的倍数

是否有任何方法可以强制执行此操作,以便我的小部件的用户只允许在设计模式下使用我的小部件时设置此类值

我尝试在
ControlListener
上的
ControlEvent
中查找,但它似乎没有取消调整大小的方法。。如果我检测到宽度/高度,可能必须手动将其设置回可接受的值


谢谢

我可以建议您控制小部件的布局。使用固定高度实现自己的
布局
,并忽略用户设置的任何布局。

当覆盖
计算
时,如果宽度和高度提示超出允许的范围,则忽略它们。例如:

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);
}
public Point computeSize(int-wHint、int-hHint、boolean-changed)
{
int宽度、高度;
/*我们只能有10像素高*/
高度=10;
/*宽度必须至少为10px*/
如果(宽度<10)
宽度=10;
/*宽度必须是10px的倍数*/
其他的
宽度-=(宽度%10);
返回新点(宽度、高度);
}