1

假设我决定从 SWT 中的基本 Canvas 类实现我自己的小部件。

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

有没有办法强加这个,所以我的小部件的用户在设计模式下使用我的小部件时只能设置这种值?

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

谢谢

4

2 回答 2

0

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

于 2012-10-24T14:31:29.023 回答
0

当您覆盖时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);
}
于 2012-10-24T16:21:25.600 回答