您通常不希望在Java
Swing组件上使用getGraphics,因为如果尚未渲染该组件,则该字段将为null;即使已渲染该组件且返回的Graphics对象也不为null,它通常也将是寿命短的对象,如果重新粉刷该组件将无法正常工作(该过程超出您的控制范围)。
更好的选择是绘制JComponent的paintComponent方法,并使用传递到此方法中的Graphics对象作为其参数。如果您需要绘制一些要作为背景图像的东西,也可以在BufferedImage上进行绘制。执行此操作时,
将
getGraphics()在此处调用图像(或
createGraphics()如果需要Graphics2D对象),则返回的对象将是稳定的。您仍然需要通过调用
Graphics#drawImage(....)paintComponent的Graphics参数,以某种方式将图像显示为JLabel显示的ImageIcon或JComponent的paintComponent方法中显示的图像。



