File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Beginning Java and the fly likes paint()ing a panel Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "paint()ing a panel" Watch "paint()ing a panel" New topic

paint()ing a panel

Dan Howard
Ranch Hand

Joined: Feb 22, 2004
Posts: 47
Very newbie question - sorry,

I'm writing a simple app which draws a maze on a panel. My main class extends a frame and I create the panel. Works fine.

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?

I think my approach is totally wrong.
Ernest Friedman-Hill
author and iconoclast

Joined: Jul 08, 2003
Posts: 24199

Hi Dan,

Welcome to JavaRanch!

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.

[Jess in Action][AskingGoodQuestions]
I agree. Here's the link:
subject: paint()ing a panel
It's not a secret anymore!