ラベル JavaFX の投稿を表示しています。 すべての投稿を表示
ラベル JavaFX の投稿を表示しています。 すべての投稿を表示

2008/08/05

JavaFX × Eclipse3.4 Ganymede

▲プラグイン、お手軽!

なーんにも考えずに、Eclipse Ver3.4.0──Ganymedeを入れてしまったので、若干ヲロヲロ。

プラグインは[ヘルプ]-[ソフトウェアの更新およびアドオン]でちゃちゃっとできるので、JavaFXの環境も入れてみたよ。ベンリですねぇ。

  1. [ソフトウェアの更新およびアドオン]-[Manage Sites]-[追加]-[ロケーション]にhttp://download.java.net/general/openjfx/plugins/eclipse/site.xmlを登録して[OK]-[OK]。
  2. http://download.java.net/general/openjfx/plugins/eclipse/site.xmlの左の「+」をクリックしてJavaFXのチェックボックスをチェック。
  3. [インストール]で完了。

サンプルソースの動かし方としては、

  1. [パッケージ・エクスプローラ]を右クリック。
  2. [新規]-[Javaプロジェクト]
  3. [プロジェクト名]に「JavaFXsample」とか。[終了]
  4. [src]-右クリック-[新規]-[その他]
  5. [JavaFX]-[JavaFX File]を選択-[次へ]
  6. [ファイル名]に「FXtest01.fx」などと登録。-[終了]
  7. [FXtext01]のファイルにサンプルソースを書く。
  8. 「JavaFXsample」を選択して右クリック-[実行]-[実行の構成]
  9. [メイン]-[プロジェクト名]には、[参照]から「JavaFXsample」を選択。
  10. [引数]-[プログラムの引数]にfxのファイル名でである「FXtest01」-[実行]

ポイントは[実行の構成]の引数のところで、ファイル名を登録するところかな?(クラス名を入れるのかと思いましたが、違うんですねー。ファイル名=クラス名にしておけば問題ありませんが)

JavaVMで実行されるクラスはFXShellで、このShellに対して実行するべきJavaFX Scriptファイル名を引数として渡す、という理屈みたいです。

コマンドラインだとこんな感じなので…。

java net.java.javafx.FXShell スクリプトファイル名

2008/08/02

JavaFX GUI記述法

なんとなくJavaFX Scriptの言語仕様読み始め。

Javaのジョーシキも知らないのに、読み出すと面白いわぁ。まず目を引くのは、GUIの記述法ですな。

JavaなヒトがSwingがどうとか言っているのは知っているけど、非Javaな私としてはこれまで、「なにソレ?」くらいの感じだったわけです。今回はからずもSwingのサンプルソースをみていて、"JavaFX での GUI 作成は「宣言」式で行うことができる、ワー、拍手喝采!!"みたいなJavaFX界隈のノリを理解できました。下記がJava のクラスのインポートでGUIを実装した場合のソース。

import javax.swing.JFrame;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.lang.System;

var frame = new JFrame();
var button = new JButton("Press me");
frame.getContentPane().add(button);
button.addActionListener(new ActionListener() {
operation actionPerformed(event) {
    System.out.println("You pressed me");
}
    });
frame.pack();
frame.setVisible(true);

うげげ。面倒くさ…。

.Netの場合だったら、Winフォーム作るとき、普段IDE環境で済ませちゃっていているわけですが。VB.Netの吐くソースをみると、Formクラスを継承して自分自身のフォームのクラスを書いていくわけなんですよね。理屈的には、わかりやすい。Javaはなんで継承して使わないんだろ?せめて土台となるJFrameくらい継承すればいいのに(と思ってウロウロしてサンプルソースを探していたら、JFrameを継承する書き方も、やっぱり王道みたいでした。ということは、.NetもJavaもGUIの記述法は似たり寄ったりってことですね。VS環境以外で.Net開発をしようと思ったことがない私が、さほど記述の手間については気にしたことがなかっただけだってことですね)。

もっともPanelとかのコントロールの中にTextBoxをおくときには、結局

Me.Panel1 = New System.Windows.Forms.Panel
Me.TextBox1 = New System.Windows.Forms.TextBox
Me.Panel1.SuspendLayout()
Me.SuspendLayout()

Me.Panel1.Controls.Add(Me.TextBox1)

とか、書いていくわけなんですけどね。

基本的にはあくまでも土台となるFormクラスのサブクラスを書いているイメージが濃厚デス。さらに各種コントロールについては、コンストラクタでプロパティやなんやかんやの初期値がほぼ設定され済みで。ソレ故に、変えたいところのプロパティだけ設定していっているイメージが強かったんですよね。このイメージの由来は、IDEでの操作感覚からきているのかも。

で、やっと本題です。Javaや.Netでのコントロールのレイヤー感覚等の記述の面倒くささに比べて、JavaFXでの書き方はこうなるそうだ。

 Frame {
              content: Button {
                   text: "Press Me"
                   action: operation() {
                        System.out.println("You pressed me");
                   }
              }
              visible: true
         }

おおお、なんてエレガント。Swing、VB.Netでの書き方に比べて、なんてシンプル。この「うれしさ」はわかるなぁ。

この書き方だったら{}の構造で、どのコントロールがどう重なっているか、一発で見当がついちゃうし。問答無用にスッキリ、大雑把。でもこの大雑把な感じはアリだなぁ。結局初期値を設定しておいて、変えたいプロパティとかだけ呼びだした後、設定しなおしてあげればいいだけの話なんだし。