読者です 読者をやめる 読者になる 読者になる

JFace

なかなか面白いかも。


簡単なサンプルみたいなのを乗せつつちょっと勉強ページっぽいのを作ろうと思います。


暇な人向けでしょうけどねw


まず必要なライブラリを集めます。
以下自分の環境なのでEclipse3.1ですのであしからず
ECLIPSE_HOME/plugin/org.eclipse.core.boot_3.1.0.jar
ECLIPSE_HOME/plugin/org.eclipse.core.runtime_3.1.0.jar
ECLIPSE_HOME/plugin/org.eclipse.jface_3.1.0.jar
ECLIPSE_HOME/plugin/org.eclipse.swt.win32.win32.x86_3.1.0.jar
場合によっては、
ECLIPSE_HOME/plugin/org.eclipse.osgi_3.1.0.jar
もいるかも@@


で、今日は基底になる、Windowとそれに簡単なメニューをさらっと復習。

package jface.sample;


import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.widgets.Display;

public class JfaceWindowSample extends ApplicationWindow {

	public JfaceWindowSample() {
		super(null); //トップレベルシェルなので親シェルはnull
	}
	
	public static void main(String[] args) {
		JfaceWindowSample windowSample = new JfaceWindowSample();
		windowSample.setBlockOnOpen(true);//Windowが閉じられるまでOpen
		windowSample.open();
		Display.getCurrent().dispose();//displayの破棄
	}
}


これでWindowが出ますね。
Eclipseだとクラスを右クリックでRunAsでSWT Applicationで実行でいけます。


基本がSWTなのでSWTを使ったことある人は取っ掛かり安いと思います。
setBlockOnOpen(boolean arg0)がちょっと特殊ですかね。
内容はコメントのままです。


まぁこれだけじゃつまらないのでメニューをつけてみます。
まずは、メニューの中身を

package jface.sample;

import org.eclipse.jface.action.Action;

public class JfaceMenuActionSample extends Action {
	
	public JfaceMenuActionSample() {
		super("終了(&0)@Ctrl+0");
	}
	
	public void run() {
		System.exit(0);
	}
}

Actionを敬称したクラスで、コンストラクタでメニューの表示を行います。
文字列がメニュー文字列になり、&の次の文字がアクセラレータ、@以降がショートカットキーになります。


で、そのメニューが選ばれたときのアクションをrun()メソッドに書くと。


で、実行用のクラスとして、Windowを用意してそこにメニューを追加する形にします。

package jface.sample;

import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.widgets.Display;

public class MenuWindowSample extends ApplicationWindow {
	public MenuWindowSample() {
		super(null);
		addMenuBar();
	}
	
	protected MenuManager createMenuManager() {
		MenuManager barMenu = new MenuManager("");
		MenuManager exitMenu = new MenuManager("終了(&Q)");
		barMenu.add(exitMenu);
		exitMenu.add(new JfaceMenuActionSample());
		
		return barMenu;
	}
	
	public static void main(String[] args) {
		MenuWindowSample window = new MenuWindowSample();
		window.setBlockOnOpen(true);
		window.open();
		Display.getCurrent().dispose();
	}
}

コンストラクタで、Windowに対してaddMenuBar()を呼ぶことによってMenuBarを使うことを提示します。


んでもって、createMenuManager():MenuManagerをオーバーライドします。
まずは、Window上に出すメニューバーを作成。テキストは特に表示ないので、から文字でOK
で、次に終了用のメニューを作成。それぞれMenuManagerと言うクラスを利用して作れます。
そして、基本のメニューbarMenuにexitMenuを追加します。
これにより、Window上に終了というメニューができます。
で、exitMenuに先ほどのActionを実装したクラスを追加します。
そうすると、終了のメニューの下に先ほど作った終了のメニューが出ます。
そして、それはActionがついてますので、クリックしたらSystem.exit(0)が呼ばれますので終了します。
Ctrl+0のショートカットキーを割り当ててるのでCtrl+0でも終了できます。


とまぁ、こんなものかなぁ


まぁ初日ってことでこれくらいで簡便をw


明日以降は業務などの加減で飛ぶ日もあるとは思いますがこまめに少しずつでもこなして生きたいと思います〜♪