首页 > 解决方案 > 只有在 Eclipse RCP 中打开视图两次后,SWT 组合才可见

问题描述

我有一个复合和滚动复合的视图。但是在第一次点击视图时,它是空的。如果我关闭它并再次打开,这些字段是可见的。请在下面找到代码片段。

public void createPartControl(Composite parent) {

    parent.setLayout(new GridLayout(1,false));
    parent.setLayoutData(new GridData(SWT.CENTER, SWT.TOP, true, true));
    parent.setBackground(ApplicationColor.WHITEBACKGROUND);

    ScrolledComposite scrollComposite = new ScrolledComposite(parent, SWT.V_SCROLL|   
              SWT.H_SCROLL | SWT.BORDER);
    main_composite = new Composite(scrollComposite, SWT.NONE);
    main_composite.setLayout(new GridLayout(1, false));
    main_composite.setLayoutData(new GridData(SWT.CENTER, SWT.TOP, true, true));
    main_composite.setBackground(ApplicationColor.WHITEBACKGROUND);
    main_composite.setSize(1700, 700);
    scrollComposite.setContent(main_composite);

    scrollComposite.setExpandHorizontal(true);
    scrollComposite.setExpandVertical(true);
    scrollComposite.setBackground(ApplicationColor.WHITEBACKGROUND);
    scrollComposite.setBackgroundMode(SWT.INHERIT_DEFAULT);
    GridData firstData = new GridData(SWT.CENTER, SWT.TOP, true, true);
    scrollComposite.setLayoutData(firstData);
    scrollComposite.addListener(SWT.Activate, new Listener() {
        public void handleEvent(Event e) {
            scrollComposite.setFocus();
        }
    });
    scrollComposite.addListener( SWT.Resize, event -> {
        int height = main_composite.getClientArea().height;
        int width = main_composite.getClientArea().width;
        scrollComposite.setMinSize( parent.computeSize( width, height ) );
    } );

    top_composite = new Composite(main_composite, SWT.NONE);
    top_composite.setLayout(new GridLayout(4, false));
    top_composite.setLayoutData(new GridData(SWT.CENTER, SWT.TOP, true, true));
    top_composite.setBackground(ApplicationColor.WHITEBACKGROUND);
}

标签: javapluginseclipse-plugineclipse-rcp

解决方案


推荐阅读