java Eclipse画布侦听器从未调用
我正在为eclipse创建一个编辑器扩展,并为编辑器的一部分创建一个编辑器,我需要绘制简单的图形部分。据我所知,我应该能够为此使用eclipse小部件画布。但从未调用添加到画布的PaintListener的paintControl方法。我假设我遗漏了一些关键的简单部分,但我找不到。下面是在画布上创建、添加和调用redraw的代码
void createGraphicPage() {
Composite composite = new Composite(getContainer(), SWT.NONE);
drawWidget = new Canvas(composite, SWT.NONE);
FormLayout layout = new FormLayout();
drawWidget.setLayout(layout);
drawWidget.addPaintListener(new PaintListener() {
@Override
public void paintControl(PaintEvent e) {
System.out.println("inDrawWidget");
Rectangle r = drawWidget.getClientArea();
e.gc.drawOval(0, 0, r.width, r.height);
}
});
drawWidget.redraw();
int index = addPage(composite);
setPageText(index, "Graphics Editor");
}
# 1 楼答案
您需要在包含控件的每个
Composite
上设置布局,并且通常在控件上设置布局数据。因此:我已经在
Composite
中添加了GridLayout
,在Canvas
中添加了GridData
布局数据。GridData
使Canvas
使用所有可用空间