バインド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));}さぁ、これで理論上は問題ないはず!さっそくプログラムを実行して印刷してみよう。印刷結果はこうなりました。無事に印刷できたけど9枚のはがきが消費されました。これを年賀状でだしたら受け取った人はパズルをすることになります。合わせるように画像をスケーリングしてしまえば良いだけのことじゃないですか!せっかくだからこの複数枚印刷の機能を残したまま、縮小印刷機能を実装することにします。使う用紙の印刷可能領域に画像をあわせるだけだから簡単ですね。false;}}複数枚印刷のコードに印刷領域にあわせて印刷対象のノードをスケーリングして印刷するだけのコードを使いするだけです。どちらの印刷方法にするかはチェックボックスを使って分岐させています。印刷が終わったら元の大きさにもどしています。成功、失敗、キャンセルでも。この自動スケーリングで印刷した結果が下の画像になります。これでクリスマスカード、年賀状もシンプルなものならJavaFXで印刷できるようになった。完全に自己満足の世界にひたっている。いちおう動いてるのとキャンセルしたときのGifアニメを貼っておきます。下のGifアニメではJobStatusがNOT_STARTEDのときにキャンセルボタンによるキャンセルをかけています。あともう一つ、キャンセルボタンではタイミング合わせるのが難しかったのでJobStatusがPRINTINGに変更されたら強制的キャンセルをするようにしてあります。なんでCANCELEDで終了しないのだろう?これは印刷リクエストがされたあとだからERRORで終了という解釈でいいんだろうか?最後にこのプログラムのコードを載せておきます。