Eclipse 4.4ではじめる Javaプログラミング入門 Eclipse 4.4 Luna対応

グラフィック・ファイルアクセス・スレッド・日付/テキスト処理 - マルチスレッドについて

Icon comment count 0
Icon stock count 0

4.3.5JavaFXコントロールの操作

ここまで、System.out.printlnでスレッドの動きを見てきましたが、どうせならマルチスレッドでGUIを操作したいと思う人も多いでしょう。実際に、TimeLabelをスレッド内からsetTextでテキスト変更するなど試してみた人もいるかもしれません。そして、なぜかエラーになって動かないのに愕然としたことでしょう。

実は、JavaFXのコントロール類は、これまで説明したマルチスレッドの処理で操作できないのです。JavaFXのコントロールは、JavaFX専用のスレッド内からのみアクセスが許されてます。このため、ただ新しいスレッドを作ってrun内から操作しようとしてもできないのです。

avaFXのコントロールを別スレッドから操作するにはTaskクラスとメッセージプロパティの設定が必要になります。

javafx.concurrent.Taskクラス

Taskクラスは、リスト4.22のタイマーに登場したTimerTaskと同様に、別スレッドで実行する処理を実装するためのクラスです。クラス内に、スレッドのrunメソッドに相当するcallメソッドをもっており、ここに処理を記述します。

コメント

    コメントはありません