- - PR -
印刷プレビュー
1
| 投稿者 | 投稿内容 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-06-11 12:36
今、Javaでエディタを作成しています。その中で印刷プレビュー機能を作ろうとしていて、JDialogにJPanelを貼り付けてそれにテキストを書き込んでいるのですが、改行が入るとうまく動きません。
なにか、よい方法はありませんか? | ||||||||||||
|
投稿日時: 2003-06-20 23:16
こんにちは、さくらばです。
これだけだとよく分からないのですが、JPanel を派生させたクラスで paint or paintComponent メソッドで直接描画を行うのか、JPanel に テキスト処理を行えるコンポーネントをはって、それに描画させるのか でずいぶん違うと思います。 後者の方が簡単です。JTextArea や JEditorPane を使えばできます。 前者の方はいろいろと面倒ですが、自分で細かい部分まで制御できます。 両方ともサンプルをのせておきます。後者の方は単に StringTokenizer で行を分割しているので、\n がいくつあっても無視されてしまいますが... sin さんが望んでいるのはどちらなのでしょうか? コンポーネントを使用するサンプル
自前で文字描画を行うサンプル
| ||||||||||||
|
投稿日時: 2003-06-24 12:56
僕はCoreJavaという本に載っていたプログラムを参考にしてJPanelにpaintComponentを用いてプレビューを作成していました。
でも、さくらばさんの方法のJTextAreaを使う方法が簡単そうなので、そちらに変えようかと思います。ただ、JTextAreaを用いてプレビューを作成した場合、プレビュー画面と実際の印策されたものは、たとえば上のほうに日付やソース名を入れたい場合などは同じようにできるのでしょうか? | ||||||||||||
|
投稿日時: 2003-06-24 22:42
こんにちは、さくらばです。
JTextArea の print メソッドは paint メソッドをコールしているので、 画面イメージとほぼ同じものになります。ただ、紙の大きさなどは無視するので、 一行の長さが印刷可能領域より長ければ欠けてしまいます。 ヘッダやフッタは JTextArea で書くのでしょうか。この場合プレビューにも ヘッダやフッタが描画されますが、印刷とは同じになります。 もしくは JTextArea ではなく、別個にヘッダやフッタを独自に描画するので しょうか。別個の場合は、JTextArea が描画を行うための原点をずらしてお かないと重なってしまいます。 参考になるかもしれないので、前の DialogSample を最低限の印刷ができる ように改造してみました。ヘッダとフッタはJTextArea とは別に描画してい ます。 印刷するために Printable インタフェースを実装させ、print メソッドを 実装しています。その中で、ヘッダ、フッタを描画してから、JTextArea の print メソッドをコールしています。
| ||||||||||||
1
