<更新記録>
2007年 12月 2日
作成

姉妹サイト検索 Web検索


ToolBar

ツールバー

ツールバーは、メニューの下に表示される、小さいアイコンボタンの集合部分のことです。 アプリケーションを使用していると、わざわざメニューをプルダウンして実際の処理をクリックするという2度の操作よりも、 1度クリックするだけでいいので効率よく作業ができます。 さらにツールバーにはイメージを貼り付けることができます。 このイメージは、ルック&フィールの操作を大きく助けることもあります。

Toolbarクラスの利用

Toolbarは、SWTのウィジェットの1つです。 ToolbarはCompositeクラスを継承しており、コンテナとして使用します。 そのコンテナの中に格納できるのがToolItemです。

それでは、サンプルプログラムを示します。 サンプルプログラムでは、アイコンを使用します。 アイコンであれば何でもいいのですが、一応実験的に使用するアイコンはこちらで用意したので、 適当なものがなければダウンロードして下さい。 [ アイコン ( zip ) ]

今回のプログラムを動作させるためには、クラスファイルとアイコンを、 以下の位置関係に配置しておく必要があります。

+-カレントディレクトリ
 +-ToolBarSample.class
 +-sample.ico
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;
public class ToolBarSample extends ApplicationWindow {
	public ToolBarSample() {
		super(null);
	}
	
	protected Control createContents(Composite parent) {
		
		// ツールバーのコンテナの作成
		ToolBar toolbar = new ToolBar(parent, SWT.HORIZONTAL);
		
		// ツールアイテムを作成して、それぞれツールバーに格納
		
		ToolItem push = new ToolItem(toolbar, SWT.PUSH);
		push.setText("push");
		push.setToolTipText("this is a push widget");
		
		ToolItem icoPush = new ToolItem(toolbar, SWT.PUSH);
		icoPush.setImage(new Image(Display.getCurrent(),
				this.getClass().getResource("./sample.ico").getPath()));
		icoPush.setToolTipText("this is an imaging push widget");
		
		ToolItem check = new ToolItem(toolbar, SWT.CHECK);
		check.setText("check");
		check.setToolTipText("this is a check widget");
		
		ToolItem radio1 = new ToolItem(toolbar, SWT.RADIO);
		radio1.setText("radio1");
		radio1.setToolTipText("this is a radio widget");
		
		ToolItem radio2 = new ToolItem(toolbar, SWT.RADIO);
		radio2.setText("radio2");
		radio2.setToolTipText("this is a radio widget");
		
		return parent;
	}
	
	public static void main(String[] args) {
		Window w = new ToolBarSample();
		w.setBlockOnOpen(true);
		w.open();
		Display.getCurrent().dispose();
	}
}
実行すると、いくつかのボタンが表示されていると思います。 pushと書いてあるボタンは、SWT.PUSHのスタイルのツールアイテムなので、いつでも押すことができます。 次のアイコンのボタンも、SWT.PUSHなので、同じふるまいをします。 その次のcheckは、SWT.CHECKのスタイルなので、見た目はボタンですが、へこんだり戻ったりします。 つまり状態を2つもっているということです。これは、チェックボックスの振る舞いと同じですね。 そしてradio1とradio2ですが、これらはそれぞれSWT.RADIOのスタイルで作成しているので、 一見してチェックボックスのような動作をしますが、どちらか一方しか選択できません。

イベントを受け取る

ToolItemには、addSelectionListener(SelectionListener)メソッドが用意されています。 SelectionListenerを登録することによって、ToolItemがクリックされた場合に、 イベントを受け取ることができるようになります。

import org.eclipse.jface.action.StatusLineManager;
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;
public class ToolItemEventSample extends ApplicationWindow {
	private static StatusLineManager statusLineManager = new StatusLineManager();
	
	
	public ToolItemEventSample() {
		super(null);
		addStatusLine();
	}
	
	protected Control createContents(Composite parent) {
		
		ToolBar toolbar = new ToolBar(parent, SWT.WRAP);
		
		ToolItem item1 = new ToolItem(toolbar, SWT.PUSH);
		item1.setText("item1");
		item1.setToolTipText("push this button!");
		
		item1.addSelectionListener(new SelectionAdapter() {
			public void widgetSelected(SelectionEvent e) {
				statusLineManager.setMessage("item1 pressed");
			}
		});
		
		toolbar.pack();
		
		return parent;
	}
	
	protected StatusLineManager createStatusLineManager() {
		return statusLineManager;
	}
	
	public static void main(String[] args) {
		Window w = new ToolItemEventSample();
		w.setBlockOnOpen(true);
		w.open();
		Display.getCurrent().dispose();
	}
}


Powered by VeryEasyCMS