我在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
}
答案 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;
}