【特集】Eclipse対抗馬の本命!? NetBeansとは?
連載一覧へ

【特集】Eclipse対抗馬の本命!? NetBeansとは?(前編)
NetBeansとGlassFishの連携&VBライクなSwing開発


株式会社ガリレオ
小山博史
2008/2/18

 

VBライクで簡単に操作できる「Swing GUI Builder」

 NetBeansには、Java GUI作成ツールである「Swing GUI Builder」が付いています。「Swing GUI Builder」は、Swing Application FrameworkJSR 296)という機能とBeans BindingJSR 295)という機能をサポートしています。

Swing Application Frameworkとは?

 Swing Application Frameworkは、Swingを使ったデスクトップ・アプリケーションを作成するためのシンプルなフレームワークです。

編集部注Swingについて詳しく知りたい読者は、連載「SwingでJavaに強くなる」をご参照ください。

 フレームワークを使うことにより、短い時間でよくある機能を実装したデスクトップ・アプリケーションを開発できます。

Swing Application Frameworkを使うには?

 Swing Application Frameworkを使うのは簡単で、新規プロジェクトを作成するときに、「Javaデスクトップ・アプリケーション」を指定します。使用するテンプレートは2種類あり、メニューバーとステータスバーを持つ単純なGUIアプリケーションを作成したいときのための「基本アプリケーション」、DBのデータに対してCRUD(Create、Read、Update、Delete)操作をするための単純なGUIアプリケーションを作成したいときのための「データベースアプリケーション」のどちらかを選んで作成します。

 プロジェクトを作成した時点で、アプリケーションと対応するDesktopApplication1.java、Aboutダイアログと対応するDesktopApplication1AboutBox.java、表示される画面と対応するDesktopApplication1View.javaという3つのクラスが作成されます。

図6 3つのクラスが作成が作成された
図6 3つのクラスが作成が作成された(画像をクリックすると拡大します)

 DesktopApplication1Viewクラスは[デザイン]表示ができ、[パレット]から部品をドラッグ&ドロップして、mainPanelへ配置することにより、簡単に画面デザインができます。

図7 [デザイン]表示と[パレット]
図7 [デザイン]表示と[パレット](画像をクリックすると拡大します)

Beans Bindingとは?

 Beans Bindingは、2つのJava Bean間のプロパティの値を同期するための仕組みです。これを使うことにより、デスクトップ・アプリケーションで2つの部品のプロパティ値を簡単に同期できます。

 例えば、リストで選択されている要素のデータを編集するテキストフィールドを提供する場合などで利用できます。Java Persistence APIとの組み合わせでDBのテーブルと同期するフォームを持つデスクトップ・アプリケーションを簡単に作成することもできます。NetBeansにおけるDB連携については、後編で解説します。

編集部注Java Persistence APIについて詳しく知りたい読者は、連載「小山博史のJavaを楽しむ」第3回「待望のJava SE 6 でパーシステンス」をご参照ください。

Beans Bindingを使うには?

 Beans Bindingを使う場合には、jTextFieldを右ボタンでクリックして表示されるメニューの[バインド]を使います。

 jTextFieldでは、バインドできるプロパティにはtextがあります。[バインド][text]として表示される画面で[ソースをバインド]に「jList1」、[式をバインド]に「${selectedElement}」と指定します。[詳細]タブでは、さまざまなモードを指定できるので、そこで[モードを更新]で「ソースから読み取りのみ(読み取り専用)」と指定します。たったこれだけで、jTextFieldとjListの連携ができてしまいます。

 ボタンがクリックされたときの動作を指定するには、[イベント]→[Action]→[actionPerformed]とします。すると、DesktopApplication1Viewクラスに下記メソッドが追加されます。

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
}

 ここへ、画面内のリスト(jList1)で選択されている値をjTextField1の値で更新する処理を記述します。

 ちなみに、DesktopApplication1Viewクラスと、jButton1とをつなぐActionListenerクラスは、DesktopApplication1ViewクラスのinitComponents()メソッド内で無名クラスとして宣言されます。

jButton1.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent evt) {
        jButton1ActionPerformed(evt);
    }
}

 リストの更新をするためには、例えば次のような独自のListModelを作成して、jListのmodelプロパティへlistModelを登録します。

private String[] sList = new String[] {
    "item1", "item2", "item3", "item4",
};
private SimpleListModel listModel = new SimpleListModel(sList);
class SimpleListModel extends javax.swing.AbstractListModel {
    private String[] list;
    public SimpleListModel(String[] list) {
        this.list = list;
    }
    public int getSize() {
        return list.length;
    }
    public Object getElementAt(int index) {
        return list[index];
    }
}

 jButton1ActionPerformed()メソッドでの処理は、listModelのソースであるsListを更新するようにして、次のようにしました。

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    int index = jList1.getSelectedIndex();
    sList[index] = jTextField1.getText();
    jList1.repaint();
}

 実行例は、次のとおりです。

図8 完成したSwingアプリケーション
図8 完成したSwingアプリケーション

 Visual Basicのような感覚でGUIを作成できるというのは、多くの開発者にとってはうれしい話です。

 Swing GUI Builderが生成したコード部分は直接変更してはいけないという制約がありますが、うまく使うことにより、GUIアプリケーションの開発は飛躍的に簡単にできるようになります。デスクトップ・アプリケーションの開発で一度使うと、Swing GUI Builderは手放せなくなりそうです。

JavaFXやGlossitope開発にも役立つNetBeans

 このように前編では、NetBeans 6.0.1マルチリンガル版の特徴、インストール、VBライクなSwing GUI Builderについて主に解説しましたが、いかがでしたでしょうか。

 後編ではより実践的に、DB連携やGlassFishとの連携によるWebアプリケーション、JRuby on Railsアプリケーションの作成の仕方などについて解説する予定です。

 ちなみにNetBeansは、連載「小山博史のJavaを楽しむ」でも紹介したJavaFXJavaFX Script Language Support for the Netbeans IDEを使って)やGlossitopeなどのGUI開発にも役立つので、試してみてはいかがでしょうか。

@IT関連記事


プロファイラでメモリリークとパフォーマンス問題を解決
Java開発の問題解決を助ける(2) フリーで利用できるプロファイラ「NetBeans Profile」を使ってメモリリークとパフォーマンスの問題を解決する方法を紹介する
Java Solution」フォーラム 2005/8/10
JavaScriptを書かずにAjaxを実現するjMaki
CoolなEclipseプラグイン(22) 
jMakiを知ってますか? タグを書くだけでAjaxが実現できる便利なライブラリです。今回はそのjMakiをさらに便利に使うプラグインを紹介します
Java Solution」フォーラム 2007/11/7

筆者プロフィール
小山博史(こやま ひろし)
Webシステムの運用と開発、コンピュータと教育の研究に従事する傍ら、オープンソースソフトウェア、Java技術の普及のための活動を行っている。Ja-Jakartaプロジェクトへ参加し、コミッタの一員として活動を支えている。また、長野県の地域コミュニティである、SSS(G)bugs(J)の活動へも参加している。

1-2-3

 INDEX 【特集】Eclipse対抗馬の本命!? NetBeansとは?(前編)
        「NetBeansとGlassFishの連携&VBライクなSwing開発」
  Page1
  「開発環境といえばEclipse!」という人へ
NetBeansの特徴
NetBeansとGlassFishの関係
GlassFishのセットアップ
  Page2
  NetBeans最新版のセットアップ
便利なGlassFishのモジュールを使ってみよう
Page3
  VBライクで簡単に操作できる「Swing GUI Builder」
JavaFXやGlossitope開発にも役立つNetBeans

ご意見、ご感想はJava Solution 会議室へどうぞ




Java Solution全記事一覧



Java Agile フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Java Agile 記事ランキング

本日 月間