私は、印刷可能を実装私のクラスにSwingで印刷の進捗状況を表示するにはどうすればいいですか?
PrinterJob job = PrinterJob.getPrinterJob();
job.setJobName(/* some name */);
Book book = new Book();
book.append(this, new PageFormat());
job.setPageable(book);
boolean ok = job.printDialog();
if (ok) {
try {
job.print();
}
catch (PrinterException ex) {
ex.printStackTrace();
}
}
これを行う場合、それは動作しますが、私の印刷可能なクラスが二度呼ばれるprint()
を取得します。 (おそらくプリンタドライバによるリソース割り当ての目的のため)
どのようにしてプログレスバーを正しく表示できますか?私のケースでは、実行する必要があるサブ印刷タスクの数はわかりますが、表示しようとすると、プログレスバーは最初から最後まで2回進みます。これはユーザーにとって恐ろしいフィードバックです。そして、私はむしろ不確定なプログレスバーを表示したくないでしょう...
どうすればいいですか?
説明:ページにたくさんのプロットを印刷しています。それらは多少複雑で印刷に時間がかかるので、レンダリングするオブジェクトが10個あることがわかるかもしれないので、10個のオブジェクトのそれぞれをレンダリングした後に、プログレスバーを0から10にしてインクリメントしたい。
http://download.oracle.com/javase/tutorial/2d/printing/index.htmlとhttp://www.java2s.com/Tutorial/Java/0261__2D-Graphics/ Catalog0261__2D-Graphics.htm – mKorbel
このダイアログは、実際の印刷(システムによって処理される)ではなく、印刷可能な印刷をプリンタの内部形式に変換するプロセスを出力することを理解していますか? –
@Penkov:はい。システムによって実際に処理される印刷は、プリンタドライバに応じて他の方法でフィードバックを与えるためです。私のページは印刷に1〜3秒かかります。なぜなら、私のプログラムが何かしていることを何らかのフィードバックを与える必要があるからです。 –