2013

非同期処理を試してみた。

JavaFX

JavaFX をはじめてからいろいろ解らないことがあって思うように進まない。

9月、10月は個人的にいろいろ面倒な季節であってそのうちにクリスマスやお正月と忙しくなる。

それでも少しだけでも! と今回は「JavaFX 2ではじめる、GUI開発 第14回 非同期処理 」を試してみる。

デスクトップアプリでは必ず必要となる技術だけに記事の解説も丁寧に書かれていました。

感謝感激!です。

非同期処理を実装するにあたって JavaFX には Task クラスがありそれが便利に使えます。

また、Platform.runLater(() –> { // … });

でスレッドを起こすことができてだいたい Swing でできていたことは可能なようです。

詳しくは上記の記事をご覧になることをお勧めします。

まだ、記事を読んだだけでいろいろ試してはいないのですが、「スレッド間のデータ交換」が面白そうだったので

実際に動かしてみました。

NetBeans プロジェクトのサンプルプログラムがダウンロードで提供されていたので非常に助かります。

ただ、ローカルのファイルを開くとあまり重い処理にはならないので解りにくかった。

そこで JavaFX と openJDK のサイトの HTML ファイルを取得して表示させるようにしてみました。

結局、あーでもない、こーでもないと下の動画のようなものができあがってしまいました。(^_^;)

おまけに自信の無い不安なソースコードも載せておきますので間違い等ありましたら教えていただければ幸いです。

もっといろいろ遊んでみたいけど解らないことが多すぎて調べる時間が足らない。(>_<。)

一日の時間が私だけ30時間にならないかと思う今日この頃です。

あっ、もう一つおまけに Java 8 を使っている新しい物好きな人は気が向いたらためしてみてください。

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

Hatena タグ:

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 タグ:

« 古い記事 新しい記事 »