PaintComponentメソッドによって描画されたBufferedImageを配置することは可能ですか?たとえば、オーバーライドされたPaintComponentメソッドで描画された画像の場合、そのためにレイアウトマネージャー(つまり、BoxLayout、BorderLayout、FlowLayout、GridBagConstrains、GridBagLayout)を使用できますか?または、画像をJComponent(つまり、JLabel)に変換する必要がありますか?
1 に答える
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(...)のコードスニペットを提供できますか?
私はあなたが最初に行くことをお勧めします。コンパイルして実行し、問題を実証しようとするコードのいくつかを見せて、それを使って作業しましょう。