2

PaintComponentメソッドによって描画されたBufferedImageを配置することは可能ですか?たとえば、オーバーライドされたPaintComponentメソッドで描画された画像の場合、そのためにレイアウトマネージャー(つまり、BoxLayout、BorderLayout、FlowLayout、GridBagConstrains、GridBagLayout)を使用できますか?または、画像をJComponent(つまり、JLabel)に変換する必要がありますか?

4

1 に答える 1

5

PaintComponentメソッドによって描画されたBufferedImageを配置することは可能ですか?

はい、可能です。とpaintComponent(...)を介してそのメソッドで描画コンポーネントの寸法を取得し、それらの寸法を使用して物を配置します。また、メソッドには、これを単純化するオーバーロードがあります。getWidth()getHeight()Graphics#drawImage(...)

たとえば、オーバーライドされたPaintComponentメソッドで描画された画像の場合、そのためにレイアウトマネージャー(つまり、BoxLayout、BorderLayout、FlowLayout、GridBagConstrains、GridBagLayout)を使用できますか?

いいえ、直接ではありません。レイアウトマネージャーは子コンポーネントのみをレイアウトするためのものだからです。

または、画像をJComponent(つまり、JLabel)に変換する必要がありますか?

これは簡単に実行できます。画像をImageIconに配置し、画像をJLabelに配置し、ネストされたコンポーネントとその最適なレイアウトマネージャーを使用してコンテナーに配置します。

編集1
あなたはコメントで尋ねます:

寸法を取得するにはどうすればよいですか?

繰り返しになりますが、メソッド内でorとandをpaintComponent(...)呼び出すだけで、ディメンションを取得できます。本当に簡単なことはありません。getSize()getHeight()getWidth()

そして、最初のインスタンスのpaintComponent(...)のコードスニペットを提供できますか?

私はあなたが最初に行くことをお勧めします。コンパイルして実行し、問題を実証しようとするコードのいくつかを見せて、それを使って作業しましょう。

于 2013-02-24T03:10:53.573 に答える