SWT Tips and Samples 基礎編 > CoolBar |
|
CoolBarCoolBarはToolBarが移動できる領域を表すウィジェットです。CoolBarを作るには少し長くなりますが、下のようなイディオムになります。CoolBarというCoolItemが移動できる領域を確保します。ToolBarを生成し、CoolItemにsetControlで参照を持たせるという流れです。CooItemはCoolBarという領域の内部でのみ移動可能です。またCoolItemのサイズは明示的に指定しないと正しく表示されません。ここでは、ToolBarのcomputeSizeメソッドでToolBarに含まれるすべてのボタンが表示されるときのサイズを得て、そのサイズの大きさだけCoolItemを表示するように指定しています。 CoolBar coolBar = new CoolBar(shell, SWT.NONE); ToolBar toolBar = new ToolBar(coolBar, SWT.FLAT); ToolItem titem1 = new ToolItem(toolBar, SWT.PUSH); .... CoolItem citem1 = new CoolItem(coolBar, SWT.NONE); citem1.setControl(toolBar); Point toolBarSize = toolbar.computeSize(SWT.DEFAULT, SWT.DEFAULT); Point coolItemSize = citem1.computeSize(toolBarSize); citem1.setSize(coolItemSize); コードで書くと複雑そうにみえますが、CoolBar、CoolItem、ToolBar、ToolItemの構造を概念図として表すと、このようになるでしょう。 サンプルプログラムサンプルプログラムでは、Shellの上と下にCoolBarを、真ん中にTextを配置しています。上のCoolBarには二つのCooItemを追加しています。CoolItemはCoolBar内でしか移動できませんが、その様子が理解できると思います。 ソースコード (CoolBarTest.java)import org.eclipse.swt.widgets.*; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.layout.*; public class CoolBarTest { public static void main(String[] args) { new CoolBarTest(); } public CoolBarTest() { Display display = new Display(); Shell shell = new Shell(display); shell.setText("CoolBarTest"); shell.setLayout(new GridLayout(1, true)); GridData gd; CoolBar coolbar1 = new CoolBar(shell, SWT.NONE); gd = new GridData(GridData.FILL_HORIZONTAL); coolbar1.setLayoutData(gd); Text text = new Text(shell, SWT.MULTI | SWT.BORDER); gd = new GridData(GridData.FILL_BOTH); gd.horizontalSpan = 3; text.setLayoutData(gd); CoolBar coolbar2 = new CoolBar(shell, SWT.NONE); gd = new GridData(GridData.FILL_HORIZONTAL); coolbar2.setLayoutData(gd); //----------------- ToolBar tb1 = new ToolBar(coolbar1, SWT.FLAT); createToolItems(tb1); CoolItem citem1 = new CoolItem(coolbar1, SWT.NONE); citem1.setControl(tb1); Point ptb = tb1.computeSize(SWT.DEFAULT, SWT.DEFAULT); Point pcb = citem1.computeSize(ptb.x, ptb.y); citem1.setSize(pcb); //-------------------- ToolBar tb2 = new ToolBar(coolbar1, SWT.NONE); createToolItems(tb2); CoolItem citem2 = new CoolItem(coolbar1, SWT.NONE); citem2.setControl(tb2); ptb = tb2.computeSize(SWT.DEFAULT, SWT.DEFAULT); pcb = citem2.computeSize(ptb.x, ptb.y); citem2.setSize(pcb); //-------------------- ToolBar tb3 = new ToolBar(coolbar2, SWT.FLAT); createToolItems(tb3); CoolItem citem3 = new CoolItem(coolbar2, SWT.NONE); citem3.setControl(tb3); ptb = tb3.computeSize(SWT.DEFAULT, SWT.DEFAULT); pcb = citem3.computeSize(ptb.x, ptb.y); citem3.setSize(pcb); shell.setSize(300,300); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } display.dispose(); } private void createToolItems(ToolBar toolBar) { ToolItem item1 = new ToolItem(toolBar, SWT.PUSH); item1.setText("Push"); ToolItem item2 = new ToolItem(toolBar, SWT.SEPARATOR); ToolItem item3 = new ToolItem(toolBar, SWT.CHECK); item3.setText("Check"); ToolItem item4 = new ToolItem(toolBar, SWT.RADIO); item4.setText("Radio"); } } 最新更新日: 2004年9月1日 |
- PR -
【Sony】大手他社よりも安い!ビジネス向け光・100Mしかも固定IP付!今なら更に初期費用最大15,000円OFF!
オフィス用品・オフィス家具 価 格 交 渉 可!
|
||||
|
|||||
Copyright(C) 2003,2004 Jasmin Project. All Right Reserved. |
SEO | [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送 | ||