2

//スクロールされたコンポジット内にコンポジットがあります。

final Composite c = new Composite(scrolledComposite, SWT.NONE); //1
c.setBackground(SWTResourceManager.getColor(SWT.COLOR_WHITE));
c.setLayout(new GridLayout(1, false));

//コンポジット c にコンポジットを追加する for ループがあります

for(int i = 0; i<100; i++){ 

    Composite b = new Composite(c, SWT.BORDER);
    b.setBackground(SWTResourceManager.getColor(SWT.COLOR_LIST_SELECTION));
    b.setLayout(new GridLayout(2, false));
    b.setBounds(112, 70, 268, 69);

//そして、その内部コンポジットに追加されたいくつかのコントローラー

    Label lblNewLabel_2 = new Label(b, SWT.NONE);
    lblNewLabel_2.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 4));
    Image img = new Image(Display.getCurrent(), result.get(i).getPicturePath());


//.... more controllers.

// 最後にループを終了し、最も外側のコンポジットをスクロールされたコンポジットに追加します。

} // end loop           
    scrolledComposite.setContent(c); //setter content!
    scrolledComposite.setMinSize(c.computeSize(SWT.DEFAULT, SWT.DEFAULT));

これはすべてうまく機能します。私の問題は、内部コンポジットが setBounds メソッドに応答しないことです。そこに何を書いても、それを拡大することはできません。これはレイアウトと関係があると思います。

誰でも手がかりを得ましたか?

前もって感謝します。

ペッター

4

2 に答える 2

3

レイアウトは、コンポジットの子のサイズと位置を設定するオブジェクトであるため、すべての子を呼び出す必要はありませんsetBounds()SWT でのレイアウトの理解 を確認してください。

SWT アプリケーションにおけるレイアウトの目的は何ですか?

于 2011-12-13T21:20:55.247 に答える
0

外側のパネルに Resize リスナーを配置して、内側のパネルを調整することを検討してください。

_outerPanel.addListener(SWT.Resize, new Listener() {
    public void handleEvent(Event e) {
        computePanelSize();  // computes the inner panel size
    }
});
于 2011-12-24T17:48:41.990 に答える