如何设置没有布局的Canvas的大小

时间:2012-08-22 07:02:49

标签: java swt

我在SWT中继承Canvas,并在构造函数中调用pack(), Canvas的大小计算为64x64。

我班上没有Style或布局。

  • 这里的大小是如何计算的?
  • 如何更改课程的大小? this.setSize()不起作用。

    public MyClass(Composite parent, int style) {
        super(parent, SWT.NONE);
        this.setBackground(getDisplay().getSystemColor(SWT.COLOR_YELLOW));

        this.computeSize(1000, 1000, true);
        this.pack();

        Point s = this.getSize();
        System.out.println(s.x); //prints 64
    }

3 个答案:

答案 0 :(得分:2)

你没有给自己大小:它是由使用你的MyClass的组件布局给出的。

所以你的画布应该可以处理任何尺寸了。

答案 1 :(得分:2)

您是否尝试通过GridData暗示所需尺寸?

final GridData data = new GridData();
data.widthHint = 1000;
data.heightHint = 1000;
canvas.setLayoutData(data);

答案 2 :(得分:2)

如果您是Canvas的子类,那么您还可以覆盖computeSize方法以强制特定的元素大小。这可以使其他元素在固定大小的组件周围流动,而不必使用布局提示,或者如果您想根据它所呈现的图像设置画布大小。

在你的MyCanvas类中可能是这样的:

public Point computeSize (int widthHint, int heightHint, boolean changed) {
  Point initialSize = super.computeSize (widthHint, heightHint, changed);
  initialSize.x = 1000;
  initialSize.y = 1000;
  return initialSize;
}