猿问

获取SWT视图的大小

我正在尝试确定SWT视图的大小,以便可以在插件中正确布置窗口小部件。我正在使用Java 8在Eclipse Neon上运行。


我使用的代码如下:


import org.eclipse.swt.SWT;

import org.eclipse.swt.graphics.Point;

import org.eclipse.swt.graphics.Rectangle;

import org.eclipse.swt.layout.RowData;

import org.eclipse.swt.layout.RowLayout;

import org.eclipse.swt.widgets.Composite;

import org.eclipse.ui.part.ViewPart;


import com.google.common.collect.ImmutableList;

import com.google.common.collect.Iterables;



public class ClockView extends ViewPart {


/**

     * The constructor.

     */

    public ClockView() {

    }


    /**

     * This is a callback that will allow us

     * to create the viewer and initialize it.

     */

    @Override

    public void createPartControl(Composite parent) {

        final RowLayout layout = new RowLayout(SWT.HORIZONTAL);

        layout.center = true;

        layout.justify = true;

        final Point area = parent.getSize();

        final ImmutableList<Integer> clockWidths = ImmutableList.<Integer>of(100, 200, 400);

        layout.marginWidth = (area.x - Iterables.getLast(clockWidths, null)) / 2;

        layout.marginHeight = (area.y - Iterables.getLast(clockWidths, null)) / 2;

        parent.setLayout(layout);

        clockWidths.forEach(width -> {

            ClockWidget c = new ClockWidget(parent, SWT.NONE);

            c.setLayoutData(new RowData(width, width));

        });

    }

    /**

     * Passing the focus request to the viewer's control.

     */

    @Override

    public void setFocus() {

    }

}


我的问题是,我尝试的每个方法都为视图的大小返回0、0。我尝试了scrollable.getClientArea和Composite.getSize。


如何确定可使用的区域?


一只甜甜圈
浏览 246回答 1
1回答
随时随地看视频慕课网APP

相关分类

Java
我要回答