Por lo general, no desea utilizar getGraphics en un componente Java Swing ya que será nulo si el componente no se ha procesado aún, e incluso si el componente se ha procesado y el objeto Graphics devuelto no es nulo, generalmente será un objeto efímero y no funcionará correctamente si el componente se vuelve a pintar (un proceso que está fuera de su control).
Una mejor alternativa es dibujar en el método paintComponent de JComponent y usar el objeto Graphics pasado en este método como su parámetro. Si necesita dibujar algo que sea una imagen de fondo, también mire en el dibujo de una Imagen Buffered. Cuando lo haga, aquí llame al getGraphics()
en la imagen (o createGraphics()
si necesita un objeto Graphics2D), y aquí el objeto devuelto será estable. De todos modos, deberá visualizar esta imagen, ya sea como un ImageIcon mostrado por un JLabel o como una Imagen mostrada en el método paintComponent de JComponent, llamando al Graphics#drawImage(....)
en el parámetro Graphics de paintComponent.
¿Puede proporcionarnos un contexto? Quizás incluya un [sscce] (http://www.sscce.org) demostrando su problema. – mre
Si está intentando personalizar la forma en que se dibuja un componente, anule 'paintComponent' y coloque su código de dibujo allí. – lhballoti