0

シェルを作成し、コンテンツとしてテキストを含む ScrolledComposite を追加しました。しかし、コンテンツのサイズに基づいて、シェルが動的にサイズを変更するようにしたいと考えています。私の実装は次のとおりです

    shell.setLayout(new GridLayout(1,true));
    ScrolledComposite sc = new ScrolledComposite(shell, SWT.V_SCROLL|SWT.H_SCROLL);
    sc.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).hint(200, 200).create());  

    sc.setExpandHorizontal(true);
    sc.setExpandVertical(true);

    Composite top = new Composite(sc,SWT.NONE);
    top.setLayout(GridLayoutFactory.swtDefaults().numColumns(1).create());

    StyledText styledText = new StyledText(top, SWT.NONE);
    styledText.setText(text);

    StyleRange style = new StyleRange();
    style.start = 0;
    style.length = text.indexOf(":"); //$NON-NLS-1$
    style.fontStyle = SWT.BOLD;     
    styledText.setStyleRange(style);    


    sc.setContent(top);
//  shell.setSize(sc.computeSize(SWT.DEFAULT, SWT.DEFAULT));
    sc.setMinSize(top.computeSize(SWT.DEFAULT, SWT.DEFAULT));

    sc.pack(true);
    shell.setVisible(true);

上記のコードでコメント行のコメントを外すと、シェルはコンテンツに基づいてサイズ変更されますが、この場合スクロールバーを達成できません。

コンテンツが一定の制限を超えている場合は、スクロールバーも取得したい。コンテンツが制限内であれば、シェルに余分な空白を持たせたくありません。

誰かがここで私を助けることができますか??

4

1 に答える 1