バインドgashiTextField.disableProperty().bind(printTask.stateProperty().isEqualTo(RUNNING));printButton.disableProperty().bind(printTask.stateProperty().isEqualTo(RUNNING));cancelButton.disableProperty().bind(printTask.stateProperty().isNotEqualTo(RUNNING));openImageButton.disableProperty().bind(printTask.stateProperty().isEqualTo(RUNNING));printerInfoToggleButton.disableProperty().bind(printTask.stateProperty().isEqualTo(RUNNING));}コードが長くなっていますが基本的なことは先ほどのテキストエリアの文字列を印刷するものと何ら変わりはありません。APIドキュメントでお勧めされているように印刷用のスレッドを別に起動させて印刷をしています。今回のプログラムでは印刷ダイアログは使用せずJavaFXがはじめから用意してあるものを使用してみます。getJobSettings()を使いをカプセル化されたジョブ構成オプションを取得します。JobSettingsクラスのsetterメソッドを使い設定します。string)メソッドで名前をつけます。ps)メソッドで給紙方法を設定します。pl)メソッドで使用するPageLayoutを設定します。pc)メソッドで印刷カラーを設定します。pq)メソッドで印刷品質を設定します。i)メソッド印刷部数を設定します。cltn)メソッドで部単位で印刷設定をします。mType)メソッドを使い設定します。印刷に関するものはこの程度ですね。このプログラムを実行してみましょう。プリンターの印刷される音が鳴り止んではがきをとりにいって唖然としました。こんなふうに印刷されていました。左上から少しだけ画像が切り取られて印刷されただけです。これでは印刷はできたけどこれをもらった人はなんだろう?と首をかしげるに違いない!プログラムを修正することにします。このようになったのか?はがきの印刷領域より画像が大きすぎたからと思われる。0)になるからそこから印刷可能な範囲だけ画像が印刷されたのだろう。残りの部分を印刷可能領域分だけ画像を位置変更して必要なだけ印刷すれば画像全体が印刷できるんじゃないか。コードを修正してみよう。