←フエルチラシノウラ。トップページへもどる。

【Java】JFaceを使ってGUIアプリを作ろう。【SWT】

Java SWT JFace GUIフレームワーク Windowアプリケーション

【Java】JFaceを使ってGUIアプリを作ろう。【SWT】

はじめに


JFaceとは、Java+SWTなGUIアプリを美しく作るためのフレームワークです。
基本を理解するために簡単なサンプルを作ってみましょう。

利用するライブラリ


Eclipseがインストールされているフォルダのpluginsフォルダ(<ECLIPSE_HOME>/plugins/)から以下のjarファイルを取り出します。
org.eclipse.core.boot_3.1.100.v20060603.jar
org.eclipse.core.commands_3.3.0.I20070605-0010.jar
org.eclipse.core.runtime_3.3.100.v20070530.jar
org.eclipse.equinox.common_3.3.0.v20070426.jar
org.eclipse.jface_3.3.0.I20070606-0010.jar
org.eclipse.jface.databinding_1.1.0.I20070606-0010.jar
org.eclipse.jface.text_3.3.0.v20070606-0010.jar
org.eclipse.swt_3.3.0.v3346.jar
org.eclipse.swt.win32.win32.x86_3.3.0.v3346.jar


これらのライブラリにパスを通しましょう。

※今回使ったEclipseのバージョンは3.3ですので、念のため。

ソース


package hoge.gui;

import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.ToolBarManager;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Text;

/**
* JFaceとSWTを利用してGUIアプリを作るための簡単なサンプル。
*
*/
public class Main extends ApplicationWindow {

/** このアプリで使うアクション */
private MyAction action;

/**
* コンストラクタ
*/
public Main() {
super(null); // トップレベル・シェルなので、親シェルはnull
action = new MyAction(this);
}

/**
* メイン
*
* @param args
*/
public static void main(String[] args) {
// トップレベル・シェルの作成
Main window = new Main();
// ウィンドウが閉じられるまでopen()メソッドをブロック
window.setBlockOnOpen(true);
// メニュー・バーを追加する
window.addMenuBar();
// ツールバーを追加する
window.addToolBar(SWT.FLAT);
// 表示 (アプリを終了させるまではここでループします。)
window.open();
// Displayの破棄 (アプリが終了されるとここが呼ばれます。)
Display.getCurrent().dispose();
}

@Override
protected MenuManager createMenuManager() {
// 親メニューの作成
MenuManager manager = new MenuManager();
// ポップアップ・メニューの作成
MenuManager fileMenu = new MenuManager("ふぁいる(&F)");
// アクションの追加:このアクションがメニュー・アイテムに相当します
fileMenu.add(action);
// 親メニューに'ファイル'メニューを追加
manager.add(fileMenu);

return manager;
}

@Override
protected ToolBarManager createToolBarManager(int style) {
// ツールバーをaddToolBarメソッドで指定したスタイルで作成
ToolBarManager manager = new ToolBarManager(style);
// アクションを追加:このアクションがツールバー・アイテムに相当します
manager.add(action);
// 作成したツールバーを返す
return manager;
}

@Override
protected Control createContents(Composite parent) {
// Textウィジェットの作成
Text editor = new Text(parent, // 親ウィジェット
SWT.MULTI | // 複数行のTextウィジェット
SWT.H_SCROLL | // 水平スクロール・バー
SWT.V_SCROLL);// 垂直スクロール・バー

return parent;
}

/**
* 終了させるアクション
*
*/
class MyAction extends Action {
/** メインウィンドウへの参照 */
private ApplicationWindow window;

/**
* コンストラクタでメイン・ウィンドウへの参照を設定する
*
* @param w
*/
public MyAction(ApplicationWindow w) {
window = w;
// テキストの指定
setText("終了(&Q)@Ctrl+Q");
// アイコンの指定 (画像のパスを指定してみてください。)
setImageDescriptor(ImageDescriptor.createFromFile(Main.class,
"close.gif"));
}

@Override
public void run() {
// アプリケーションを終了する
window.close();
}
}
}


結果


メニューとボタンのバーとテキストエリアだけが付いている単純な画面が表示されれば成功です。
このサンプルで利用されるActionは「終了アクション」のみです。
自分でアクションを追加して、さらに複雑な処理のできるアプリを作ることも可能です。

参考


eclipse.org
www.eclipse.org/
JFaceを使ってみる
www13.plala.or.jp/observe/JFace/jface_overview.html

http://goodjob.boy.jp/chirashinoura/id/157.html

作成日: 2007-10-05 11:11:38

最終更新日: 2007-10-05 11:23:07

▲このページの上へ