调用getGraphics()的任何替代方法都返回null
通常,当我调用getGraphics()时,即使我设置了xxx.getGraphics();它也返回null。xxx可见(如Google搜索所示…)
但这是行不通的,这使我感到沮丧,因为它在C-Sharp中很容易实现。
有谁知道这样做的更好方法,而不是使用getGraphics()?
回答:
您通常不希望在Java
Swing组件上使用getGraphics,因为如果尚未渲染该组件,则该字段将为null;即使已渲染该组件且返回的Graphics对象也不为null,它通常也将是寿命短的对象,如果重新粉刷该组件将无法正常工作(该过程超出您的控制范围)。
更好的选择是绘制JComponent的paintComponent方法,并使用传递到此方法中的Graphics对象作为其参数。如果您需要绘制一些要作为背景图像的东西,也可以在BufferedImage上进行绘制。执行此操作时,
getGraphics()
在此处调用图像(或createGraphics()
如果需要Graphics2D对象),则返回的对象将是稳定的。您仍然需要通过调用Graphics#drawImage(....)
paintComponent的Graphics参数,以某种方式将图像显示为JLabel显示的ImageIcon或JComponent的paintComponent方法中显示的图像。
以上是 调用getGraphics()的任何替代方法都返回null 的全部内容, 来源链接: utcz.com/qa/416819.html