- PR -

Jtableの印刷

投稿者投稿内容
シュン
ぬし
会議室デビュー日: 2004/01/06
投稿数: 328
お住まい・勤務地: 東京都
投稿日時: 2004-06-24 13:12
1.Component#createImage()の機能に対する認識が間違っています。APIドキュメントを
きちんと読んでください。
2.Componentに関連付けられるGraphicsは、Graphics2Dです。Graphics2Dに対しては、原
点移動以外の座標軸変換処理が可能です。APIドキュメントを読んでみましょう。
モンプチ
常連さん
会議室デビュー日: 2004/06/03
投稿数: 28
投稿日時: 2004-06-24 23:07
シュン様、再度御返事有難う御座います。
御返事遅れて失礼しました。

関連すると思われるAPIドキュメントを読みました。
結局、image化する方法もわからず、Graphics化での処理する方法もまだわかってません。
が、自分で何とか解決するよう頑張ります。

私のようなものに何度も御指導頂き本当に感謝しております。
今後ともよろしくお願い致します。
シュン
ぬし
会議室デビュー日: 2004/01/06
投稿数: 328
お住まい・勤務地: 東京都
投稿日時: 2004-06-25 11:12
その様子ですと、もうちょっとお助けしないと駄目かな?

Component#createImage()は、ダブルバッファリング用のバッファを作成するメソッドです。
例えていうなら、元の絵と同サイズの画用紙を作るだけで、絵の複製は行いません。

そもそもImage化(?)する必要がないと思いますよ。画面への描画命令と同等の処理をGraphicsオブジェクトに対して行うのが正道でしょう。

Printable#print()の引数のGraphicsオブジェクトを、あなたのプログラム内部で準備する必要はありません。PrintJobにPrintableを渡した後、印刷APIが内部で印刷用のGraphicsオブジェクトを準備してそのメソッドに渡してくれます。プログラマは単に受け取ったGraphicsオブジェクトに描画をしていけばよいだけです。コールバック関数とか、デザパタでいうところのTemplate Methodパターンをイメージできれば良いのですが…

「GraphicsオブジェクトがGraphics2Dオブジェクト」というのは、型チェックしないでダウンキャストしても問題ない、ということです。なぜ引数のシグネチャがGraphicsのままなのかというのは、おそらく後方互換のためだと思います。

例えばこんな感じで。

コード:


class MyPrintable implements java.awt.print.Printable{

private Component c;
public MyPrintable(Component c){this.c = c;}

public int print(Graphics graphics, PageFormat pageFormat, int pageIndex)
{
if(pageIndex != 0){
return NO_SUCH_PAGE;
}
Graphics2D g2d = (Graphics2D)graphics;
g2d.translate(...);
g2d.scale(...);
g2d.rotate(...);
c.print(g2d);
return PAGE_EXIST;
}
}

//...

DocPrintJob job = service.createPrintJob();
DocAttributeSet das = new HashDocAttributeSet();
Doc doc = new SimpleDoc(new MyPrintable(test), flavor, das);
job.print(doc, pras);





[ メッセージ編集済み 編集者: シュン 編集日時 2004-06-25 13:56 ]
モンプチ
常連さん
会議室デビュー日: 2004/06/03
投稿数: 28
投稿日時: 2004-06-25 15:56
シュン様御返事有難う御座います。

やっと、できました。
気づいてみると。。バカな質問でした。
とりあえず、シュン様のソースは見ずに自分で書けました。

デザインパターンは、存在くらいしか知りません。
今後は関連書も読みながら、作業してみたいと思います。

マンツーマン指導のようになってしまい、多大な御迷惑をお掛けしました。
申し訳御座いませんでした。


スキルアップ/キャリアアップ(JOB@IT)