在什么时候在RCP视图中设置组件大小

时间:2014-12-11 11:13:07

标签: java swt eclipse-rcp

我不想太具体,因为这可能有很多应用程序,但如果需要,我可以发布一些代码。为简单起见,我们假设RCP视图中有Canvas,我想在中心的canvas上绘制一个圆圈。不是每次重新抽奖,我都希望它从中心开始。

我尝试在扩展canvas的构造函数中执行此操作,但getSize()方法尚未返回正确的大小。我尝试了pack()layout() View的父组合,然后获得canvas大小,仍然没有。

那么有什么地方可以捕获视图和正在设置的组件的初始大小吗?

2 个答案:

答案 0 :(得分:0)

收听SWT.Resize事件。创建控件时,您将获得调整大小。

答案 1 :(得分:0)

我不确定你的意思"不是每次重绘,"但通常情况下,要绘制项目(并让它们继续绘制,你必须实际上#34;绘制"在一个控件的PaintListener的paintControl()方法中。这可能就是你的样子寻找:

    canvas.addPaintListener(new PaintListener() {
    @Override
    public void paintControl (PaintEvent event) {
        Rectangle clientRect = canvas.getClientArea();
        event.gc.drawOval(0, 0, clientRect.width - 1, clientRect.height - 1);
    });

所以你可以得到"尺寸"通过控件(画布的)客户区,然后进行相应的绘制。您需要更改drawOval方法中的参数,以使您的圆圈具有合适的大小。

那是如何"画"并保持绘图。否则,它会消失。