Link to home
Get AccessLog in
Avatar of SaiSeng
SaiSeng

asked on

How to draw image on top most Layer?

my java file is @ http://www.geocities.com/giasens/files/JavaBingo.zip

i have created CardLayout,
inside a "card", i hav many inner BorderLayout(s)
now, i just realise i couldnt drawImage on my top most layer...

can any one HELP me?? thanks.. ..

btw, can anyone suggest me where to learn paint() ??
i couldnt get what's repaint() about...

thanks again.
Avatar of CEHJ
CEHJ
Flag of United Kingdom of Great Britain and Northern Ireland image

Why not just add an Image in an ImageIcon in a JLabel?
ASKER CERTIFIED SOLUTION
Avatar of CEHJ
CEHJ
Flag of United Kingdom of Great Britain and Northern Ireland image

Link to home
membership
This content is only available to members.
To access this content, you must be a member of Experts Exchange.
Get Access
Avatar of SaiSeng
SaiSeng

ASKER

btw, the following image shows what i want to paint on
http://www.geocities.com/giasens/files/myBox.JPG

thanks
Yes. where it's marked 'box' should be a JLabel with your image in it, as shown in the above example
Hi SaiSeng,

Your links seems not good : "This page is not available. " or "Sorry, the page you requested was not found. "

>> i just realise i couldnt drawImage on my top most layer...
  public void paint(Graphics g)
  {
     g.drawImage(img,0,0,null); // Image img already loaded
  }

>> Your links seems not good
In fact your links are good if we first visit your home page : http://www.geocities.com/giasens/

Replace:
      public void paint(Graphics g)
      {
             g.drawImage(box, 80, 80, this);
      }

By:
      public void paint(Graphics g)
      {
                      g.drawImage(box, 80, 80, this);
                      super.paint(g); // for lightweight child components
      }
>>public void paint(Graphics g)

Actually that is not the way to do things if using Swing. See here for how to:

https://www.experts-exchange.com/questions/20927185/Label-on-an-etched-JPanel.html
By:
     public void paint(Graphics g)
     {
            g.drawImage(box, 20, 140, this);  // 20,140 as in myBox.jpg
            super.paint(g); // for lightweight child components
     }
You can wait until the image is loaded:

   public void init()
   {
        box = getImage(getCodeBase(), "box.jpg");
        MediaTracker tracker = new MediaTracker(this);
        tracker.addImage(box, 0);
        try{
        tracker.waitForAll();
        }catch(Exception e){e.printStackTrace();}
Using an ImageIcon will get you out of all the little gotchas caused by Java loading its images aynchronously, apart from saving you having to rewrite your JPanel as a JPanel subclass
Avatar of SaiSeng

ASKER

paint doesnt help... but Jlabel...
thanks anyway ;)
now i'm trying to addMouseListener on the icon ;)

/*
 * ImageIcon icon = new ImageIcon("box.jpg");
 * JLabel label = new JLabel(icon);
 */
:-)