Eclipseを利用してSWTやSwingのGUIのアプリケーション開発を行うプラグインとして、Visual Editorが無償で利用できます。Visual Editorを利用すると、ドラッグ&ドロップでUIコンポーネントを画面に張り付けながら視覚的にGUIアプリケーションを開発することができます。しかし、Visual Editorには、コンポーネントを張り付ける際のレイアウトの微調整に手間が掛かったり、イベントの記述が面倒だという問題がありました。GUIアプリケーションの開発環境の代表としてVisual Studioがありますが、Visual EditorはVisual Studioには機能的には遠く及びません。
そこに現れたのが、Sunが提供しているオープンソースIDEのNetBeansに実装されたGUI Builder(通称Matisse)でした。Matisseは、いままで複雑なGUIを開発する際に必要だった、レイアウトマネージャの習得の労力を省き、直感的にGUI画面の開発を行えるようになっています。このMatisseをEclipse上から利用できるようにしたのが、Matisse4MyEclipseです。
Matisse4MyEclipseの利用には、Professional Editionの購入が必須となります。サイト上からオンラインでライセンス購入をすると、ライセンスキーがメールで届くので、[MyEclipse]→[Update Subscription...]から、ライセンスアップデートを実施します。続いてソフトウェアアップデート機能を利用してMatisse4MyEclipseプラグインを取得します。[Help]→[Software Updates]→[Find and Install...]からSearch for new features to installを選び、URLに
http://downloads.myeclipseide.com/downloads/products/ matisse4myeclipse/updates-4.0
を指定してプラグインをダウンロードします。これでMatisse4MyEclipseを使用する準備が整いました。
普通のJavaプロジェクトを作成した後[File]→[New]→[Other…]→[MyEclipse]→[Swing]→[Matisse Forms]を選択します。続いて適切なパッケージ名・クラス名を入力し、テンプレートをJPanel、JFrameなどから選びます。今回は、Formを作るのでJFormを選びます(図10)。
続いて、フォーム上にコンポーネントを配置します。以下が実際に配置した例です。オブジェクトの配置が縦・横ともにきれいに並んでいるのが分かります(図11)。
ラベルと、横のテキストフィールドは、文字の下端を基準にして位置合わせが行われています。また、上下のテキストフィールドの間隔は自動的に調節され、それに従って対となるラベルの位置も調節されます。Matisseではコンポーネントを配置する際に、利用者は細かい位置指定をしなくとも、自動的にきれいな配置が形成されます(図12)。
この直感的な位置合わせ機能は、GroupLayoutというレイアウトマネージャにより実現されています。GroupLayoutは非常に優れているため、JavaSE6から標準で搭載されることになりました。
続いて、コンポーネントのリサイズ機能を利用してみます。画面をリサイズした際に、ラベルの長さは変えずに、テキストフィールドの長さだけが変わるように設定します(図13)。
リサイズできるようにするテキストフィールドを選択して右クリックしてAuto Resizing > Horizontalを選びます。以下にリサイズ前後の結果を示します(図14、図15)。
最後に、イベント追加機能を利用してみます。イベントを追加したいコンポーネントを右クリックして、追加したいイベントを選びます(図16)。これにより自動的にリスナーが設定されます。Visual Editorのように無名クラス内に書くのではなく、クラスのprivateメソッドとして、実装することが可能になります。これによりMicrosoft Visual Studioと同様の開発スタイルを取ることができるようになります。
ここまで、MyEclipseの新機能を中心に紹介してきました。これ以外にも、Spring、JSF、Struts、Hibernateなどとの連携機能や、データベース管理機能などアプリケーション開発に便利な多くの機能が含まれています。Eclipse Callistoの登場により、当初のメリットは薄れつつありますが、最新機能は十分に魅力的なものです。ぜひ一度試してみてください。
Copyright © ITmedia, Inc. All Rights Reserved.