2009-08-03 8 views
1

別の質問で示されたprintComponentを使っています。 JPanelを印刷する場合は、JPanelを最初にJFrameに追加して、JFrameを画面に描画すると効果的です。しかし、私が印刷する前にそれをしないと、空白のページが印刷されます。どうしてこれなの?最初にコンポーネントを画面に描画しなくても、printComponentを使用できますか?

+0

アントンの?申し訳ありません、私はこのグラフィックスのものにつきものです。 Savvas Dalkitsis、私はパネルのための好みのサイズを設定すると、それが動作する原因になるでしょうか? –

+0

推奨サイズは、レイアウトマネージャーへの提案です。それはうまくいかないでしょう。 Graphicsオブジェクトについては、たとえば、新しいJPanel()を呼び出すことによってコンポーネントから取得することもできます。getGraphics();スイングコンポーネントを操作する場合、より多くのツールを提供するGraphics2Dオブジェクトに安全にキャストできます。 Java2D APIの詳細については、Javaチュートリアルを参照してください。 –

+0

私はあなたの問題の原因となっていることについて少し混乱しています。 JPanelを追加した後に再度ペイントしても、JFrameを描画してからJPanelを追加しても何も表示されないということですか? – Anton

答えて

0

これは、描画するパネルの初期サイズが0,0であるためです。レイアウトマネージャを持つコンテナに追加されて表示されると、「通常」のサイズになります。

+0

これを設定する方法はありますか?私はパネルにpreferredsizeを与えようとしましたが、その作業はありませんでした。 –

+0

try setSize(int width、int height)です。 Javaがまだコンポーネントを描画しないかもしれないので、これがうまくいくかどうかはわかりませんが、試してみてください。 –

3

私は、フレームに表示されていないパネル上のBufferedImageを作成するには、次のようなコードを使用しました:、uはグラフィックオブジェクトに描画何を意味

JPanel panel = new JPanel(); 
... // add components 
panel.setSize(300, 300); 
panel.doLayout(); 
関連する問題