Композит SWT виден только после двойного открытия вида в RCP затмения - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть вид с композитом и прокруткой композит.Но при нажатии на вид в первый раз, он пуст.Если я закрою его и открою снова, поля будут видны.Пожалуйста, найдите фрагмент кода ниже.

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);
}
...