This week's giveaway is in the Java/Jakarta EE forum. We're giving away four copies of Java EE 8 High Performance and have Romain Manni-Bucau on-line! See I draw the maze on the panel. I have a drawPanel object where I get the Graphics from (Graphics g = this.drawPanel.getGraphics() Works fine.
Let's say that this window gets covered by another window. When I bring my app back to focus nothing gets repainted.
Is there an example of how I should use the paint method in this case?
Should I draw everything to an Image object and then redraw that image buffer? How does that work?
Short answer: yes, your approach is totally wrong. Don't use getGraphics() -- instead, implement a method such that a Graphics is just handed to you at exactly the right time. If you're using a java.awt.Panel, then override paint(). If you're using a javax.swing.JPanel, then override paintComponent().
I'm going to move this to the Swing/AWT forum for followup; I'll see you over there. If you don't understand what I mean about overriding, just say so and I'll larn ya.