为了账号安全,请及时绑定邮箱和手机立即绑定

获取SWT视图的大小

获取SWT视图的大小

一只甜甜圈 2021-05-04 17:12:03
我正在尝试确定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。如何确定可使用的区域?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 245 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信