首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何填写ScrolledComposite?

如何填写ScrolledComposite?
EN

Stack Overflow用户
提问于 2013-07-24 07:17:44
回答 1查看 808关注 0票数 1

我有一个从ScrolledComposite扩展的类,在这个类中,我创建了一个组合,用于填充父ScrolledComposite。但是,每当我向内部组合添加标签时,它只会包装到右上角。我希望我的内部复合材料完全填充外部ScrolledComposite。有办法这样做吗?

代码语言:javascript
复制
    public class Container extends ScrolledComposite {

    final Composite comp;
    Label nameLabel, sizeLabel, dateLabel;
    ArrayList<Label> entrySize, date;
    ArrayList<SimpleEntry> entry;
    Color white;
    Font font;

    public Container(Composite parent, int style) {
        super(parent, style);
        white = new Color(getDisplay(), 255, 255, 255);
        font = new Font(getDisplay(), "Arial", 16, SWT.BOLD);
        setBackground(white);
        setLayout(new GridLayout(1, false));

        comp = new Composite(this, SWT.BORDER);
        GridData compData = new GridData(SWT.FILL, SWT.FILL, true, true);
        comp.setLayoutData(compData);
        setContent(comp);
        comp.setBackground(white);
        comp.setLayout(new GridLayout(3, false));

        nameLabel = new Label(comp, SWT.BOLD);
        sizeLabel = new Label(comp, SWT.BOLD);
        dateLabel = new Label(comp, SWT.BOLD);

        GridData d1 = new GridData(SWT.CENTER, SWT.CENTER, true, false);
        nameLabel.setLayoutData(d1);

        GridData d2 = new GridData(SWT.CENTER, SWT.CENTER, true, false);
        sizeLabel.setLayoutData(d2);

        GridData d3 = new GridData(SWT.CENTER, SWT.CENTER, true, false);
        dateLabel.setLayoutData(d3);

        nameLabel.setBackground(white);
        sizeLabel.setBackground(white);
        dateLabel.setBackground(white);

        nameLabel.setText("Name");
        sizeLabel.setText("Size");
        dateLabel.setText("Last Modified");

        nameLabel.setFont(font);
        sizeLabel.setFont(font);
        dateLabel.setFont(font);

        comp.setSize(comp.computeSize(SWT.DEFAULT, SWT.DEFAULT));
        comp.layout();

        addDisposeListener(new DisposeListener() {
            @Override
            public void widgetDisposed(DisposeEvent e) {
                Container.this.widgetDisposed(e);
            }
        });
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-24 08:11:09

只需在构造函数的末尾添加以下行:

代码语言:javascript
复制
this.setMinSize(comp.computeSize(SWT.DEFAULT, SWT.DEFAULT));
this.setExpandHorizontal(true);
this.setExpandVertical(true);

备注:

  • 记住要dispose()你自己创建的所有资源(ColorFont,.)
  • 考虑通过使用display.getSystemColor(SWT.COLOR_WHITE)display.getSystemFont()来使用系统资源(不需要配置)。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17827535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档