2004年12月13日

JFace

新しいツールを作ることになったので今回はJFace100%で行ってみることに。
なるほど、確かにGUI作成がわかりやすく、簡単に、簡潔になっているようだ。

ただ、フレームワークと言うことでブラックボックス化されている部分でちょっとハマった箇所があったのでメモ。

JFaceでWindowアプリを作る時はApplicationWindowをextendsする。
そのコンストラクタの中で、メニューバーを付ける時はaddMenuBar()、ステータスバーを付ける時はaddStatusLine()などとする。
(コンストラクタ以外でも可能かもしれないけどShellが作成される前に呼び出す必要があるようだ。どのタイミングでShellが作成されるかは不明。)

が、メニューを追加しようとするとAssertionFailedException: null argument;が発生。
メニューにアイコンを付けようとするとダメなようだ。

Imageの管理にImageRegistryを使用しているが、調べてみると内部でカレントのDisplayを取得しようとしてnullになっているのがエラーの原因ようだ。

無いなら作ってやれということでApplicationWindowのコンストラクタ内で勝手にDisplayをnew。
するとうまくカレントのDisplayを取得したのか動作してくれた。
そのときnewしたDisplayとshell.getDisplay()やDisplay.getCurrent()で取得したdisplayを比較すると同じインスタンスだったのでうまくいった模様。

ちなみにJFaceのMenuManagerでメニューにセパレータを追加する時は
menuManager.add(new Separator());

JFaceのメニューはコードが散らからないのでナイス。

Trackback on "JFace"

このエントリーのトラックバックURL: 

"JFace"へのトラックバックはまだありません。

Comment on "JFace"

"JFace"へのコメントはまだありません。

Post a Comment

コメントする

コメント登録機能が設定されていますが、TypeKey トークンが設定されていません。