SWT Tips and Samples 基礎編 > ScrolledComposite

 

ScrolledComposite

ScrolledCompositeは、任意のウィジェットにスクロールバーを作るクラスです。スクロールバーを表示するには、下の例のようにウィジェットのインスタンス生成時にScrolledCompositeを親ウィジェットとして渡します。さらにそのウィジェットをScrolledCompositeのsetContent()メソッドに渡します。つまり、ウィジェットとScrolledCompositeの間で相互参照が行われている形になります。
 またスクロールバーが表示される条件を決める必要があります。この条件を設定するにはsetMinSize()メソッドを使って、内部ウィジェットの最小サイズを指定します。内部ウィジェットを表示できるエリアがこのサイズよりも小さくなったときに、スクロールバーが表示されます。

Shell shell = new Shell(...);
ScrolledComposite sc = new ScrolledComposite(shell, SWT.H_SCROLL | SWT.V_SCROLL);
Composite c = new Composite(sc, SWT.NONE | ...);
...
sc.setContent(c);
sc.setMinSize(400,400);
sc.setExpandHorizontal(true);
sc.setExpandVertical(true);

スクリーンショット

10 x 10 のボタンを格子状に配置したサンプルプログラムです。通常のCompositeに100個のボタンを配置し、それをScrolledCompositeの上に載せているという構造です。このボタンを載せたCompositeの表示エリアのサイズが、400 x 400のサイズよりも小さくなるとスクロールバーが表示されるという仕組みになっています。

ソースコード (ScrolledComposite.java)

import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;

public class ScrolledCompositeTest {
        public static void main(String[] args) {
                new ScrolledCompositeTest();
        }
        public ScrolledCompositeTest() {
                Display display = new Display();
                Shell shell = new Shell(display);
                shell.setText("ScrolledComposite");
                shell.setLayout(new FillLayout());
                
                ScrolledComposite sc = 
                    new ScrolledComposite(shell, SWT.H_SCROLL | 
                                                 SWT.V_SCROLL);
                Composite c = new Composite(sc, SWT.NONE);
                c.setLayout(new GridLayout(10, true));
                
                GridData gd = new GridData();
                
                //10x10の格子状にボタンを配置
                for (int i=0; i<100; i++){
                        Button b = new Button(c, SWT.PUSH);
                        b.setText(Integer.toString(i));
                        gd = new GridData(GridData.FILL_BOTH);
                        gd.heightHint = 30;
                        gd.widthHint = 30;
                        b.setLayoutData(gd);
                }
                sc.setContent(c);
                sc.setMinSize(400,400);
                sc.setExpandHorizontal(true);
                sc.setExpandVertical(true);

                shell.pack();
                shell.open();
                while (!shell.isDisposed()) {
                        if (!display.readAndDispatch()) {
                                display.sleep();
                        }
                }
                display.dispose();
        }
}


最新更新日: 2004年8月16日
 
関連リンク
Eclipse API ドキュメント
ScrolledComposite

- PR -

プレゼンテーション作成ソフト無料お試し版配信中

【Sony】大手他社よりも安い!ビジネス向け光・100Mしかも固定IP付!今なら更に初期費用最大15,000円OFF!

オフィス用品・オフィス家具 価 格 交 渉 可! 
◎ 目指せ★業界最安値 ★ ◎ オフィネット・ドットコム株式会社

注文から納品まで驚きの早さ!!【ASKULカタログ】はこちらから・・・

マイクロソフト お得な見積! まとめての購入ならオトクな方法で。ライセンスだから管理も簡単。


Copyright(C) 2003,2004 Jasmin Project. All Right Reserved.
SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送