Float on the flow

とあるエンジニアのブログ。「ゆったり・しっかり」がモットー。

Eclipse+VisualEditorで快適Swingプログラミング

以前Javaで作った開発補助ツールがまた必要になったので、
ついでに少しバージョンアップすることに。(CUIGUI


学生時代にSwingプログラミングに1度挑戦して大ハマリした
経験があるので、少しでもハマる気配があったら計画を中止する
つもりでやってみたら、意外にあっさりと出来てしまいました。


以下、自分用備忘録的日記。

ツールキットの選択

最近の主流は次の2つの模様。

  • Swing

Swingはいわずと知れたJava標準のツールキット。
昔のイメージだと「Swing==重い」ですが、最近(JDK1.4以降)では
色々と工夫されて速くなっているようです。

  • SWT(+JFace)

SWTEclipse付属のツールキット。見た目重視のようです。
昔はSwingよりもだいぶ速かったらしい(?)


SWTだとそれ関係のJARにCLASSPATHを通す必要があり、
 他のメンバーへの配布を考えると面倒なので、Swingを採用。
 RADライクな環境はどちらにもあるし。

環境構築

「All-in-one Eclipse 3.1.1」で一発インストール。超お手軽♪


なにがお手軽かって、これを入れればEclipse本体+日本語化の
ほかに、VisualEditorというGUI構築環境のプラグインとか
その他もろもろ必要なプラグインが一緒に入ってくれるんですよ。

コーディング

Eclipseでプロジェクトを作成。
つづいて「ビジュアル・クラス」を新規作成。
「アプリケーション」を選べば、自動的にメニューバーつきの
JFrameを作ってくれます。


その上に必要なコンポーネントをポチポチと貼っていく感じ。
VBチックでとってもラクです。
(昔はこれをぜーんぶ手書きでやっていたと考えると、ありえない。。。)


一番下のJFrameはGridLayoutにして、その上にJPanelを適宜載せて
いくと良い感じにレイアウトできます。
そのJPanelはNullLayoutにしてやると、JPanel内で絶対位置指定
できるので、まさにVB感覚。
レイアウトマネージャありきで考えると細かい位置指定が難しくて
個人的にはすごくストレスフルなので、これは良い発見でした。
(一番下をGridLayoutにすることで、ある程度はウインドウリサイズに
 追従できるのがポイント!)


そして、JPanel内にJLabelやらJComboBoxやらを配置。
イベントリスナも、配置したコンポーネントを選択して
右クリックメニューから生成できるので、手っ取り早いです。


ただし、keyTyped()は生成できるのにkeyPressed()は生成できないなど、
完璧ではないみたいですね。(他に理由があるのかな?)
もちろん、コードを直接書けばいいだけですけどね。
書き方はkeyTyped()をまねれば良いだけなので。


あとは、そのイベントリスナから必要なメソッドを呼び出して
処理を実行すればOKです。

そのほか

あとはEclipseデバッグ機能でデバッグしたり、
antでjarに固めたり。


さらには、「launch4j」を使ってEXE化するところまでやってみました。
ちゃんとアイコンファイルも作って(.pngからフリーソフトで.ico化)、

  • EXE本体
  • メインウインドウ(JFrame)
  • ファイル選択ダイアログ(JFileChooser)

にもそのアイコンが表示できるようにしたので、見た目上はほぼ
ネイティブアプリケーション!
※もちろん、Look&FeelもSystemのものを取得して反映させています。
⇒JFileChooserはJFrameを渡せるほうのコンストラクタで作ると、
 アイコンを設定できる。

感想

ざっとこんな感じで、およそ2日で一通りできました。
GUI構築はやはりGUI上でやるべきなんですね。


昔より100倍くらい生産性が良かったと思いますです。


では、今日はこれにて。

    • しかしこのエントリ、コードが無いとなんのことやらさっぱり、ですね。。。