如果没问题,我将首先告诉你我想做什么,因为我不确定我挣扎的路线甚至是实现我目标的最佳方式。
我有一个包含两个 JPanel 的 JFrame。一个包含许多按钮(buttonPanel),另一个最初是空白的(displayPane)。当按下按钮时,displayPanel 中显示的内容会发生变化。它的工作方式是每次按下按钮都会创建一个扩展 JPanel 的新对象,然后将其添加到 displayPane
因此,除了一种特殊情况外,以上所有内容都可以正常工作(尽管我坦率地承认这可能不是最好的方法)。
在这种特殊情况下,我需要创建一个 JLayeredPanel,然后在其上绘制一个剪切图像。JLayeredPanel 因为我想在它上面画一些东西,剪裁是因为我只想显示部分区域(确切的部分被传递给构造函数)。
现在,我遇到的问题是这个。我知道绘制剪切图像的唯一方法是通过g=thingie.getGraphics(), g.setClip(Shape shape), g.drawImage(various)
. 然而,所有这些都依赖于能够获得图形。但是因为我首先组装对象,所以没有与 JLayeredPane 关联的图形对象(因为它没有显示),所以 getGraphics 返回 null 并g.setClip()
抛出空指针异常。
显然,我以某种方式和某处做错了。任何帮助将不胜感激,如果问题令人困惑,对不起。我试图包含尽可能多的细节,现在我有点担心我把这个问题弄混了。我会密切关注这一点,并在需要时进行澄清。