0

I am building a swing interface for drawing overlays over a particular image. I have found several examples of how to draw an image on a JPanel, and I am able to do this without difficulty. However, I would like to keep this image completely static while dynamically drawing overlays on top of it. With that in mind, it would be better if I could set the image as a permanent background of the panel, rather than having paintComponent() redraw the image every time. This would be particularly useful, as there will frequently be situations where I want to removeAll() graphics currently on the panel and redraw new ones.

So my question is this: is there a way to set a permanent background image in JPanel, or do I have to redraw the image every time paintComponent() is called?

Community
  • 1
  • 1
ewok
  • 20,148
  • 51
  • 149
  • 254

2 Answers2

2
  • put Image as Icon / ImageIcon to the JLabel

  • use this JLabel instread of JPanel

  • JLabel hasn't implemented any LayoutManager in compare with JFrame(BorderLayout) or JPanel(FlowLayout)

  • you have to define the proper LayoutManager, that accepting PreferredSize came its child(s)

  • then there are accesible (almost nearly) all methods as for JPanel, as container works

Community
  • 1
  • 1
mKorbel
  • 109,525
  • 20
  • 134
  • 319
1

maybe you can try putting the Jpanel inside another Jpanel. You draw the image on the container JPanel. then make your inner JPanel a transparent one. this way, when there are no objects on it, you see the background of the parent JPanel which did not change.