在SWT中使用FillLayout和浏览器

时间:2017-04-03 22:46:32

标签: eclipse eclipse-plugin swt

我有一个由标题和浏览器组成的视图。我希望浏览器填满我的观点。它应该是这样的:

我尝试了不同的组合。

    c = new Composite(parent, SWT.NONE);
    c.setLayout(new RowLayout(SWT.VERTICAL));

    Label l = new Label(c, SWT.NONE);
    l.setBackground(color);
    l.setText("----------------------Heading--------------------------------");
    l.setFont(new Font(null, new FontData(Constants.FONT, 12, SWT.BOLD)));

    Composite wrapper = new Composite(c, SWT.NONE);
    wrapper.setBackground(new Color(null, 0, 0, 0));
    wrapper.setLayout(new FillLayout(SWT.VERTICAL));
    browser = new Browser(wrapper, SWT.WRAP);
    browser.setBackground(color);

生产:

将FillLayout设置为c也不起作用。通过这样做,标题和浏览器,共享视图的大小并具有相同的大小。

    c = new Composite(parent, SWT.NONE);
    c.setLayout(new FillLayout(SWT.VERTICAL));

    Label l = new Label(c, SWT.NONE);
    l.setBackground(color);
    l.setText("----------------------Heading--------------------------------");
    l.setFont(new Font(null, new FontData(Constants.FONT, 12, SWT.BOLD)));

    browser = new Browser(c, SWT.WRAP);
    browser.setBackground(color);

生产:

我也尝试了以下内容:

composite with filllayout

-> composite with gridlayout

    ->composite with rowLayout (fixed height, grab right)

    ->composite with rowLayout

        -> composite with fillLayout

            -> composite with browser

1 个答案:

答案 0 :(得分:1)

假设标题和浏览器具有相同的父级,您可以像这样使用GridLayout

parent.setLayout( new GridLayout( 1, false ) );
label.setLayoutData( new GridData( SWT.FILL, SWT.TOP, true, false ) );
browser.setLayoutData( new GridData( SWT.FILL, SWT.FILL, true, true ) );

即使单细胞网格不是GridLayout的意思,它应该可以解决问题。布局数据建议标签在顶部对齐并使用所有水平空间和浏览器使用水平和垂直空间