私が苦労しているルートが私の目的を達成するための最良の方法でさえあるかどうかわからないので、それでよろしければ私が何をしようとしているのかをお話しすることから始めます.
2 つの JPanel を含む JFrame があります。1 つは多数のボタン (buttonPanel) を含み、もう 1 つは最初は空白 (displayPane) です。ボタンが押されると、displayPanel に表示される内容が変化します。これが機能する方法は、ボタンを押すたびに、JPanel を拡張する新しいオブジェクトを作成し、それを displayPane に追加することです。
したがって、特定のケースを除いて、上記のすべてがうまく機能しています (ただし、これが最善の方法ではないことは認めます)。
この特定のケースでは、JLayeredPanel を作成し、その上にクリップされた画像を描画する必要があります。JLayeredPanel の上に何かを描画したいので、領域の一部 (正確な部分がコンストラクターに渡される) のみを表示したいので切り取られます。
今、私が抱えている問題はこれです。クリップされた画像を描画する唯一の方法は、g=thingie.getGraphics(), g.setClip(Shape shape), g.drawImage(various)
. ただし、そのすべては、グラフィックスを取得できることに依存しています。しかし、最初にオブジェクトをアセンブルしているため、JLayeredPane に関連付けられたグラフィックス オブジェクトはありません (表示されていないため)。そのため、getGraphics は null を返しg.setClip()
、Null Pointer Exception をスローしています。
明らかに、私はどういうわけかどこかでこれを間違っています。質問がわかりにくい場合は申し訳ありません。私はできるだけ多くの詳細を含めようとしましたが、問題を混乱させてしまったのではないかと少し心配しています. 私はこれを監視し、必要に応じて明確にします。