0

ユーザーがズームインおよびズームアウトできるビューを作成したいので、次を使用してビューを実装することを計画しましたScrolledComposite

    ScrolledComposite sc = new ScrolledComposite(shell, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
    sc.setBounds(0, 0, 200, 200);

setBounds()問題は、コンテンツのサイズがスクロールされたコンポジットのサイズよりも小さい場合、コントロールまたはスクロールされたコンポジットの方法を試しても、常にスクロールされたコンポジットの左上隅に表示されることsetOrigin()です。button以下の例では、 (100, 50)の表示領域コンテンツはsc(200, 200) のクライアント領域よりも小さく、表示する位置を設定しようとしても、ボタンは常に左上隅に表示されます。スクロールされたコンポジット。

    Button button = new Button(sc, SWT.PUSH);
    button.setText("Button");
    button.setBounds(50, 50, 100, 50);
    sc.setContent(button);
    sc.setOrigin(30, 30);

私が得る結果は

ボタンは常に左上隅にあります

この問題を解決するにはどうすればよいですか?

4

1 に答える 1

0

ここでの秘訣は、ボタンと他のコンテンツを含むComposite内で別のものを使用することです。ScrolledComposite内側またはコンテンツCompositeでは、必要に応じて子供を柔軟に配置できます。はScrollCompositeレイアウトを使用しないため、子の配置を制御することはできません。のように、その配置TabItemは許可されますsetContentが、その配置は許可されません。

ScrolledComposite sc = new ScrolledComposite(shell, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
sc.setBounds(0, 0, 200, 200);

Composite content = new Composite(sc, SWT.NONE);
content.setSize(300, 300);
sc.setContent(content);

Button button = new Button(content, SWT.PUSH);
button.setText("Button");
button.setBounds(50, 50, 100, 50);

contentコンポジットは、子をレイアウトするのに好きなように使用できます。また、コンテンツ コンポジットで選択したレイアウトを使用して、ボタンが常に中央に配置されるようにすることもできます。

于 2012-12-26T11:50:17.347 に答える