2013年 8月

JavaFX の TableView を試してみた。

JavaFX

今日は TableView を試してみました。

もちろん今回も JavaFX 2で始めるGUI開発 を参考にさせていただいてます。

この記事のサンプルのままだと面白みが減ってしまうので少し変えてます。

といっても大したことは出来るはずがありません。

何故なら今日初めて TableView を触ったからです。(^_^;)

そういうことでこんなのができました。

ControlsFX の Rating も使ってみました。

1

 

選択時に TextArea に各項目を表示させてみました。

2

3

4

 

Title と Author を編集可能としました。

6

 

Title と Author はソート可能の設定としました。

Rating は挫折しました。(>_<。)

7

 

Rating を変更できるようにしました。(変更できないようにする方法が解らなかった)

8

9

 

以上のように簡単なことしかやっていません。

今回テーブルの選択位置変更イベントの取得に ChangeListener を使っていたのですが null が来るのでどうしたものかと悩んでました。

そこで InvalidationListener を使ってみました。

ただ InvalidationListener を使っても選択位置変更イベント時に null はやってきます。

つまり、null チェックは必要だということですね。

私の直感によると(何故調べない)選択位置変更時に古い値を null にしてから新しい値を取得しているんじゃないかと思います。

でも、InvalidationListener はBeanが実際に使われるときに変更のチェックを行うイベントなのでこちらのほうが良いそうです。

まだ情報収集が足らないのでいろいろ躓いて半泣き状態になってしまいますがプログラムが動いてくれると素直によろこべます。

詳しい内容は先述しました私が参考にしているサイトに詳しい解説があります。

ただ私がおもしろ半分で追加したことは載っていませんのでこのプログラムのコードを晒しときます。

初めての TableView なので間違いがあればご指摘くださいませ。

ついでに動画と Java Web Start も貼っておきますね。

Webstart: click to launch this app as webstart (Java 8 実行環境必須)

Hatena タグ:

Java Web Start (English by Machine translation)

Java

How to make Java Web Start.

use the sample app ControlsFX.

ControlsFX is an external library of great JavaFX8.

ControlsFX 

Of them, as long as it was downloaded and extracted the file
Library body controlsfx-8.0.2-developer-preview-1.jar
Sample application controlsfx-8.0.2-developer-preview-1-samples.jar
I use  these.

Signature does not seem to be jar files of these two.

You will sign the jar files of these two.

Create a signature file are implanted the following command to start the command prompt.

keytool -genkey –alias javafx -keystore keystore –storepass password –keypass password_2 -validity 3650

Please do not forget your password and alias name keystore.key The resulting file is required to sign the jar file.

Update the manifest file before you sign.

I will update as the following manifest file of controlsfx-8.0.2-developer-preview-1-samples.jar.

Manifest-Version: 1.0
Main-Class: org.controlsfx.HelloControlsFX
Class-Path: controlsfx-8.0.2-developer-preview-1.jar

We will now update our controlsfx-8.0.2-developer-preview-1-samples.jar to make the MANIFEST.MF file as described above.

jar uvmf MANIFEST.MF controlsfx-8.0.2-developer-preview-1-samples.jar

You can use the keystore file that you just created update the manifest file of controlsfx-8.0.2-developer-preview-1-samples.jar When you have finished
I put a sign controlsfx-8.0.2-developer-preview-1.jar and controlsfx-8.0.2-developer-preview-1-samples.jar.

jarsigner -keystore keystore controlsfx-8.0.2-developer-preview-1-samples.jar javafx

Enter the password you will be asked to enter password.

I put a sign the controlsfx-8.0.2-developer-preview-1.jar as well.

jarsigner -keystore keystore controlsfx-8.0.2-developer-preview-1.jar javafx

I enter here will also be prompted for a password of course.

Sign the jar file is now complete.

The next step is to create a JNLP file.

controlsfx-8.0.2-developer-preview-1-samples.jnlp

<?xml version=”1.0″ encoding=”utf-8″?>
<jnlp codebase=”http://yucchi.jp/java/java_web_start/HOGE/” spec=”1.0″ xmlns:jfx=”http://javafx.com” href=”controlsfx-8.0.2-developer-preview-1-samples.jnlp”>
  <information>
    <title>HelloControlsFX</title>
    <vendor>Hoge</vendor>
    <description>null</description>
    <offline-allowed/>
  </information>
  <resources>
    <jfx:javafx-runtime version=”2.2+” href=”http://javadl.sun.com/webapps/download/GetFile/javafx-latest/windows-i586/javafx2.jnlp”/>
  </resources>
  <resources>
    <j2se version=”1.6+” href=”http://java.sun.com/products/autodl/j2se”/>
    <jar href=”controlsfx-8.0.2-developer-preview-1-samples.jar” size=”200919″ download=”eager” />
    <jar href=”controlsfx-8.0.2-developer-preview-1.jar” size=”455114″ download=”eager” />
  </resources>
<security>
  <all-permissions/>
</security>
  <applet-desc  width=”800″ height=”600″ main-class=”com.javafx.main.NoJavaFXFallback”  name=”HelloControlsFX” >
    <param name=”requiredFXVersion” value=”8.0+”/>
  </applet-desc>
  <jfx:javafx-desc  width=”800″ height=”600″ main-class=”org.controlsfx.HelloControlsFX”  name=”HelloControlsFX” />
  <update check=”always”/>
</jnlp>

The codebase = “http://yucchi.jp/java/java_web_start/HOGE/” of the JNLP file for the above-mentioned
controlsfx-8.0.2-developer-preview-1-samples.jar
controlsfx-8.0.2-developer-preview-1.jar
controlsfx-8.0.2-developer-preview-1-samples.jnlp
It is ready to be swelling the link as below with the deployment.

<a href=”http://yucchi.jp/java/java_web_start/HOGE/controlsfx-8.0.2-developer-preview-1-samples.jnlp”>

However, you will need a web server of your supports the JNLP file.

to mine.types
application / x-java-jnlp-file jnlp
Please add it if it does not bet.

Webstart: click to launch this app as webstart (Java 8 実行環境必須)

Hatena タグ:

Java Web Start

Java

ちょっと前に英語が苦手な(出来ない)私が相手の要求に上手く応えることができなかった。

今でもその人が何を望んでいるのかちょっとよく解らない。

たぶん Java Web Start のことかな?って思うので今回のエントリーはそれを取り上げてみることにした。

今回は外部ライブラリを使う JavaFX アプリケーションをサンプルにします。

既にサンプルアプリとして公開されているものを使わさせていただきます。

JavaFX の外部ライブラリとして凄く良くできている ControlsFX です!

ControlsFX 

このファイルをダウンロードして解凍した中の

ライブラリ本体 controlsfx-8.0.2-developer-preview-1.jar

サンプルアプリ controlsfx-8.0.2-developer-preview-1-samples.jar

を使います。

現時点ではこれら二つの jar ファイルは署名されてないので心苦しいのですが勝手に署名を入れさせていただきます。

今回は Java Web Start の作り方なので署名ファイルは簡易的なオレオレ署名を作ります。

コマンドプロンプトを起動して下記コマンドを打ち込み署名ファイルを作成します。

keytool -genkey –alias javafx -keystore keystore –storepass password –keypass password_2 -validity 3650

できあがった keystore.key ファイルは jar ファイルに署名するのに必要なのでエイリアス名とパスワードは忘れないようにしてください。

署名をする前にマニフェストファイルを更新します。

controlsfx-8.0.2-developer-preview-1-samples.jar のマニフェストファイルを下記のように更新します。

Manifest-Version: 1.0
Main-Class: org.controlsfx.HelloControlsFX
Class-Path: controlsfx-8.0.2-developer-preview-1.jar

上記のような MANIFEST.MF ファイルを作って controlsfx-8.0.2-developer-preview-1-samples.jar を更新するのが一番楽かな。

jar uvmf MANIFEST.MF controlsfx-8.0.2-developer-preview-1-samples.jar

controlsfx-8.0.2-developer-preview-1-samples.jar のマニフェストファイルの更新が終わったら先ほど作った keystore ファイルを使用して

controlsfx-8.0.2-developer-preview-1-samples.jar と controlsfx-8.0.2-developer-preview-1.jar に署名を入れます。

jarsigner -keystore keystore controlsfx-8.0.2-developer-preview-1-samples.jar javafx

パスワードの入力を求められますのでパスワードを入力します。

同様に controlsfx-8.0.2-developer-preview-1.jar にも署名を入れます。

jarsigner -keystore keystore controlsfx-8.0.2-developer-preview-1.jar javafx

こちらも当然パスワードを要求されますので入力します。

これで jar ファイルへの署名は完了です。

次は JNLP ファイルを作成します。

controlsfx-8.0.2-developer-preview-1-samples.jnlp

<?xml version=”1.0″ encoding=”utf-8″?>
<jnlp codebase=”http://yucchi.jp/java/java_web_start/HOGE/” spec=”1.0″ xmlns:jfx=”http://javafx.com” href=”controlsfx-8.0.2-developer-preview-1-samples.jnlp”>
  <information>
    <title>HelloControlsFX</title>
    <vendor>Hoge</vendor>
    <description>null</description>
    <offline-allowed/>
  </information>
  <resources>
    <jfx:javafx-runtime version=”2.2+” href=”http://javadl.sun.com/webapps/download/GetFile/javafx-latest/windows-i586/javafx2.jnlp”/>
  </resources>
  <resources>
    <j2se version=”1.6+” href=”http://java.sun.com/products/autodl/j2se”/>
    <jar href=”controlsfx-8.0.2-developer-preview-1-samples.jar” size=”200919″ download=”eager” />
    <jar href=”controlsfx-8.0.2-developer-preview-1.jar” size=”455114″ download=”eager” />
  </resources>
<security>
  <all-permissions/>
</security>
  <applet-desc  width=”800″ height=”600″ main-class=”com.javafx.main.NoJavaFXFallback”  name=”HelloControlsFX” >
    <param name=”requiredFXVersion” value=”8.0+”/>
  </applet-desc>
  <jfx:javafx-desc  width=”800″ height=”600″ main-class=”org.controlsfx.HelloControlsFX”  name=”HelloControlsFX” />
  <update check=”always”/>
</jnlp>

上記の JNLP ファイルの codebase=”http://yucchi.jp/java/java_web_start/HOGE/” に

controlsfx-8.0.2-developer-preview-1-samples.jar

controlsfx-8.0.2-developer-preview-1.jar

controlsfx-8.0.2-developer-preview-1-samples.jnlp

を配備して下記のようにリンクをはればできあがりです。

<a href=”http://yucchi.jp/java/java_web_start/HOGE/controlsfx-8.0.2-developer-preview-1-samples.jnlp”>

ただし、あなたのサーバーが JNLP ファイルをサポートしている必要があります。

mine.types に

application/x-java-jnlp-file  jnlp

と無ければ追加してください。

Webstart: click to launch this app as webstart (Java 8 実行環境必須)

Hatena タグ:


ControlsFX の Dialog を試してみた。

JavaFX

JavaFX には標準で Dialog Box が無い!

なんで無いのかは解らないけど JavaFX 8 なら外部ライブラリーの ControlsFX の Dialog が使えるようです。

ちょっと試してみました。

リストから選択された Dialog を表示させて Dialog での処理をテキストエリアに表示させるだけのシンプルなプログラムです。

こんな感じで動きました。

1

2

3

4

5

6

7

8

9

10

11

12

かなり良い感じの Dialog Box になってます。

ただ、Font Dialog は標準出力に勝手に表示されます。デバッグ用のが残ってるんでしょうか?

それと気になるのは Choice Input Dialog でデフォルトを設定した場合、デフォルト選択のまま Ok ボタンを押すと null が返されるのは何故なんだろう?

私的に少し馴染めない仕様になってるところがあるのでちょっと注意が必要です。

それでは Java 8 環境が必要ですがこのプログラムのコードと Java Web Start を貼っておきますね!

Webstart: click to launch this app as webstart (Java 8 実行環境必須)

Hatena タグ:

ImageGetter (JavaFX) での覚え書き

JavaFX

この前、JavaFX の学習がてらに創った ImageGetter というお遊びプログラムでの覚え書きです。

イメージを取得して画像を表示させる処理と、その画像を保存させる処理を書いておきます。

プログラム全体を載せようと思ったのですが無駄に長いのと JavaFX 初心者ということもあって間違ってるかもしれないので。(^_^;)

見たいって人がいれば暇をみつけてプログラム全体をアップするか考えます。

解説は無いですが何をしているか解るようにコメントをいれてあります。

あと ImageView のサイズ調整に ImageGetter.java の starat メソッドに

としてます。

縮小率は適当です。(やってることも適当です)

こんなことしなくても良い方法があるかもしれませんが解らなかったので諦めてこうしました。(^_^;)

あと Dialog でも少しはまったのでそのことも書こうかと思ったのですが標準ライブラリでない無いからやめておきます。

なんで Dialog が標準ライブラリでないのか疑問ですがこの先どうなるのかまだ解らないですしね。

最後に、くどいようですが間違ってるかもしれないのでおかしなところがあれば笑って許してくださいね。(^_^)

Hatena タグ:

« 古い記事