How can I draw on top of an image?

I'm using a JApplet with three JPanel's inside of it.
Inside one of those JPanel's I would like to place an image and a button. When the button is clicked, I want to draw an oval on top of the image . Each subsequent time the button is clicked, the oval will move to a different location.
So here are my questions:
1) What should I use to draw the image? (a JLabel with an ImageIcon on it?)
2) Could I simply use g.drawOval() in paintComponent() to directly draw on top of the image/JLabel?
Any help will be greatly appriciated.

Here's a sample to study;-import java.awt.*;
import java.awt.event.*;
public class DrawOnImage extends java.applet.Applet{
  int xPos, yPos;
  Image img;
  public void init() {
    add(new Label("Hello World") );
    Button press = new Button("press");
    add(press);
    press.addActionListener(new ActionListener(){
      public void actionPerformed(ActionEvent e){
        xPos = (int)(Math.random()*270);
        yPos = (int)(Math.random()*170)+30;
        repaint();
    img = getImage(getDocumentBase(), "anImage.JPG");
  public void paint(Graphics g){
    g.drawImage(img,0,30,this);
    if(yPos>=30)g.fillOval(xPos, yPos, 45, 45);
}

Similar Messages

  • How can I draw image in a vbean?

    How can I draw image in a vbean?
    this is my code :
    import java.awt.BorderLayout;
    import java.awt.Image;
    import java.awt.Graphics;
    import java.net.MalformedURLException;
    import java.net.URL;
    import com.sun.jimi.core.Jimi;
    import oracle.forms.handler.IHandler;
    import oracle.forms.properties.ID;
    import oracle.forms.ui.VBean;
    public class PrintEmailLogo extends VBean {
         URL url;
         Image img;
         boolean ImageLoaded = false;
         public void paint(Graphics g) {
              if (ImageLoaded) {
                   System.out.println("yes~~~");
                   g.drawImage(img, 0, 0, null);
              } else
                   System.out.println("no~~~");
         public boolean imageUpdate(Image img, int infoflags, int x, int y, int w,
                   int h) {
              if (infoflags == ALLBITS) {
                   System.out.println("yes");
                   ImageLoaded = true;
                   repaint();
                   return false;
              } else
                   return true;
         public void init(IHandler arg0) {
              super.init(arg0);
              try {
                   url = new URL("file:print/77G.gif");
                   img = Jimi.getImage(url);
                   Image offScreenImage = createImage(size().width, size().height);
                   Graphics offScreenGC = offScreenImage.getGraphics();
                   System.out.println(offScreenGC.drawImage(img, 0, 0, this));
              } catch (MalformedURLException e) {
                   // TODO Auto-generated catch block
                   e.printStackTrace();
    but when I run it in forms
    when it run Graphics offScreenGC = offScreenImage.getGraphics();
    It throw a exception:
    java.lang.NullPointerException     at com.avicit.aepcs.calendar.PrintEmailLogo.init(PrintEmailLogo.java:72)     at oracle.forms.handler.UICommon.instantiate(Unknown Source)     at oracle.forms.handler.UICommon.onCreate(Unknown Source)     at oracle.forms.handler.JavaContainer.onCreate(Unknown Source)     at oracle.forms.engine.Runform.onCreateHandler(Unknown Source)     at oracle.forms.engine.Runform.processMessage(Unknown Source)     at oracle.forms.engine.Runform.processSet(Unknown Source)     at oracle.forms.engine.Runform.onMessageReal(Unknown Source)     at oracle.forms.engine.Runform.onMessage(Unknown Source)     at oracle.forms.engine.Runform.processEventEnd(Unknown Source)     at oracle.ewt.lwAWT.LWComponent.redispatchEvent(Unknown Source)     at oracle.ewt.lwAWT.LWComponent.processEvent(Unknown Source)     at java.awt.Component.dispatchEventImpl(Unknown Source)     at java.awt.Container.dispatchEventImpl(Unknown Source)     at java.awt.Component.dispatchEvent(Unknown Source)     at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)     at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)     at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)     at java.awt.Container.dispatchEventImpl(Unknown Source)     at java.awt.Component.dispatchEvent(Unknown Source)     at java.awt.EventQueue.dispatchEvent(Unknown Source)     at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)     at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)     at java.awt.EventDispatchThread.pumpEvents(Unknown Source)     at java.awt.EventDispatchThread.run(Unknown Source)
    I change it to:
    import java.awt.BorderLayout;
    import java.awt.Image;
    import java.awt.Graphics;
    import java.net.MalformedURLException;
    import java.net.URL;
    import javax.swing.JFrame;
    import com.sun.jimi.core.Jimi;
    import oracle.forms.handler.IHandler;
    import oracle.forms.properties.ID;
    import oracle.forms.ui.VBean;
    public class PrintEmailLogo extends VBean {
         URL url;
         Image img;
         public void paint(Graphics g) {
              try {
                   url = new URL("file:print/77G.gif");
                   img = Jimi.getImage(url);
                   g.drawImage(img, 0, 0, this));
              } catch (MalformedURLException e) {
                   // TODO Auto-generated catch block
                   e.printStackTrace();
         public void init(IHandler arg0) {
              super.init(arg0);
    But it display nothing.
    It isn't paint continuous.
    what's wrong in my vbean?
    please help me.

    The following code works fine for me:
    package oracle.forms.fd;
    import java.awt.*;
    import java.awt.event.*;
    import java.net.*;
    import java.util.*;
    import javax.swing.*;
    import javax.swing.event.*;
    import oracle.forms.handler.IHandler;
    import oracle.forms.properties.ID;
    import oracle.forms.ui.CustomEvent;
    import oracle.forms.ui.VBean;
    public class test extends VBean {
      private URL url;
      private URL m_codeBase; 
      private Image img;
    public void paint(Graphics g) {
      // draw the image
      g.drawImage(img, 0, 0, this);
    public void init(IHandler arg0) {
       super.init(arg0);
       // load image file
       img = loadImage("file:///c:/coyote.jpg");   
    public test()
        super();
       *  Load an image from JAR file, Client machine or Internet URL  *
      private Image loadImage(String imageName)
        URL imageURL = null;
        boolean loadSuccess = false;
        Image img = null ;
        //JAR
        imageURL = getClass().getResource(imageName);
        if (imageURL != null)
          try
            img = Toolkit.getDefaultToolkit().getImage(imageURL);
            loadSuccess = true;
            return img ;
          catch (Exception ilex)
            System.out.println("Error loading image from JAR: " + ilex.toString());
        else
          System.out.println("Unable to find " + imageName + " in JAR");
        //DOCBASE
        if (loadSuccess == false)
          System.out.println("Searching docbase for " + imageName);
          try
            if (imageName.toLowerCase().startsWith("http://")||imageName.toLowerCase().startsWith("https://"))
              imageURL = new URL(imageName);
            else if(imageName.toLowerCase().startsWith("file:"))
              imageURL = new URL(imageName);
            else
              imageURL = new URL(m_codeBase.getProtocol() + "://" + m_codeBase.getHost() + ":" + m_codeBase.getPort() + imageName);
            System.out.println("Constructed URL: " + imageURL.toString());
            try
              img = createImage((java.awt.image.ImageProducer) imageURL.getContent());
              loadSuccess = true;
              System.out.println("Image found: " + imageURL.toString());
              return img ;
            catch (Exception ilex)
              System.out.println("Error reading image - " + ilex.toString());
          catch (java.net.MalformedURLException urlex)
            System.out.println("Error creating URL - " + urlex.toString());
        //CODEBASE
        if (loadSuccess == false)
          System.out.println("Searching codebase for " + imageName);
          try
            imageURL = new URL(m_codeBase, imageName);
            System.out.println("Constructed URL: " + imageURL.toString());
            try
              img = createImage((java.awt.image.ImageProducer) imageURL.getContent());
              loadSuccess = true;
              System.out.println("Image found: " + imageURL.toString());
              return img ;
            catch (Exception ilex)
                    System.out.println("Error reading image - " + ilex.toString());
          catch (java.net.MalformedURLException urlex)
            System.out.println("Error creating URL - " + urlex.toString());
        if (loadSuccess == false)
          System.out.println("Error image " + imageName + " could not be located");
        return img ;
    }Francois

  • How can i NOT include top level keyword in the metadata of an image?

    Hello,
    I want to know how can i NOT include top level keyword in the metadata of an image. I know there is an option for not applying a keyword to an exported image, but is there an option for not applying the top level keyword to the actual image?
    I have organized my geographical (by location) keywords like this:
    Places
    USA
    New York
    Miami
    Spain.
    If i add geographical keywords to all my images, all my images will have the keyword "Places", i dont think that it have any sence to have all your images with one keyword. How can i fix this? Any sugestion? i will appreciate it a lot any help or information that you could give me.
    Excuse my english, i know it is not good. I hope that you could understand me.
    Thanks,
    Marcelo :)

    Explicitly excluding a keyword only applies when "exporting". Unfortunately, there's currently no way to stop the keyword being written to the file when "Save Metadata to File" command is used. The natural reaction of users to this difference is to suggest that it is stupid. Nevertheless, there are good reasons why the difference exists:
    1. "Export" creates a new file whereas "Save Metadata to File" writes the metadata back into the existing file.
    2. There are very good reasons why certain keywords should not be written to file, and the example given in the OP is one. Saving metadata to file is more often used as means of backing up important image related metadata, independently of the catalog or allowing the metadata to be visible in other aplications. It would be rare that such a file would be shared with a third party, so the reason for not including certain keywords is less obvious. Actually, not including it can result in no end of confusion and grief. For example, if the top level (or any keyword) was excluded during the save metadata process then the other keywords would be orphaned when image is imported back into the catalog (e.g. buiding a new catalog).
    The development team are aware of the need, in some circumstances, to exclude certain keywords when save metadata command is used. How and when the issue is resolved, without adding even more confusion/complexity, is some way off.

  • Help!How can i draw an image that do not need to be displayed?

    I want to draw an image and save it as an jpeg file.
    first I have to draw all the elements in an image object.I write a class inherit from Class Component,I want to use the method CreateImage,but I get null everytime.And i cannot use the method getGraphics of this object.Thus i can not draw the image.
    when i use an applet,it runs ok.I use panel and frame,and it fails.
    How can i draw an image without using applet,because my programme will be used on the server.
    Thank you.

    you could try this to create the hidden image
    try
              GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
              GraphicsDevice gs = ge.getDefaultScreenDevice();
              GraphicsConfiguration gc = gs.getDefaultConfiguration();
              offImage = gc.createCompatibleImage(100, 100);
              offG = offImage.getGraphics();
          catch(Exception e)
              System.out.println(e.getMessage());
          }

  • How can I clear my top sites list?

    how can I clear my top sites list?

    Try Menu > More > Settings > Clear history
    Bookmarked sites will remain even after history is cleared.

  • How can I draw two differenct plots at the same graph?

    [I am beginner]
    I have two different set of data which have differenct x-axis values. How can I draw two data at the same plot?
    For example, one data set is
    x y
    1 3.5
    3 2.3
    5 1.3
    8 3.2
    The other
    1 2.3
    2.5 5.4
    4 2.5
    If I use m_graph.plotXvsY two times. But it draw only one graph at the same time.
    Please let me know. Thank you in advance.

    Do you really need the two sets of data on the same plot or is what you really care about is that the two sets of data are in the same graph? If it's the former, then there's not much that you can do since a plot can only contain one set of data. You can append to an existing set of data by calling the corresponding Chart (for example, ChartXvsY) method, but the result is that the plot's data will appear continuous.
    If it's the latter, the way to do this is to add multiple plots to the graph and plot each set of data in a separate plot. For example, go to the Plots tab in the graph's property pages, add another plot, then here's some sample code that demonstrates how to plot the sets of data from your example above:
    double xData1[] = { 1, 3, 5, 8 };
    double yData1[] = { 3.5, 2.3, 1.3, 3.2 };
    CNiReal64Vector xDataSet1(4, xData1), yDataSet1(4, yData1);
    m_graph.Plots.Item(1).PlotXvsY(xDataSet1, yDataSet1);
    double xData2[] = { 1, 2.5, 4 };
    double yData2[] = { 2.3, 5.4, 2.5 };
    CNiReal64Vector xDataSet2(3, xData2), yDataSet2(3, yData2);
    m_graph.Plots.Item(2).PlotXvsY(xDataSet2, yDataSet2);
    Hope this helps.
    - Elton

  • In PSE 9 - how can I tilt the top of the photo forwards to get a better perspective

    In PSE 9 - how can I tilt the top of the photo forwards to get a better perspective

      There are two main methods:
    You can use lens correction
    Filter >> Correct Lens Distortion
    Then use the sliders to correct perspective.
    Or use the menu bar:
    Image >> Transform Perspective
    Than drag the corner handles to correct and then crop.
     

  • How can i arrange my Top Rated Playlist to be from the new song till the old i added... (also to be in the iphone) ??

    how can i arrange my Top Rated Playlist to be from the new song till the old i added... (also to be in the iphone) ??
    i want the every sone the i mark as FULL STARTs (full rate) will be shown in the top of the list.. and each time i add a song that way it will be the first..
    i need it to be *** same in my iphone..  hope to find the help here
    thanks !

    there is no way to make a list that every song that i mark full star will be in the list as i added them ?
    i mean i want to add all song i like with FULL stars but i want them to be arrenged as i added them to the list..
    i think i had it once and it was working perfectly with the iphone but now for some reason nothing seems to work..

  • How can I draw a line in Preview without the arrow head

    Hello all!
    How can I draw a line in Preview without the arrow head at the end of the line?

    Yes. Once you select the line bar a new entry will appear where you can select what type of line. Based on my experience whether or not it will change is iffy.

  • How can i disable the top sites on my safari browser?

    How can I remove the Top Sites features when I open safari so that the whole page defaults to Google?

    That doesn't really disable "top sites," it just hides the page from regular view. One can still select "show top sites" in the History menu. I would like it turned off. I don't want this feature to be accessible at all. There should be a setting that turns it off entirely.
    I don't begrudge other people's preferences if they like it, but there should be the ability to simply deactivate the feature. I don't find it useful, I find it creepy, like the browser is stalking me. I know it just uses data from my history, but I don't care. It feels like my browser is stalking me and invading my privacy. Since it's my browser, I want to tell it to knock it off, once and for all.

  • How can i disable the 'top sites' cleaning history does not remove this and it is confusing and a risk to privacy

    How can i disable the 'top sites' cleaning history does not remove this and it is confusing and a risk to privacy.
    It also serves no purpose as sites i want to keep are bookmarked
    Is there an alternatively an addon for this

    Hi there - nope, this doesnt work either. the options available when I tap and hol are only OPEN IN NEW TAB, SHARE, ADD TO HOME SCREEN
    wayne

  • How can we draw Round Rectangle Border

    how can we draw Round Rectangle Border for example, just like XP's Task Manager( under "performance tab" )

    HI,
    Check MacTopia's support area for Word. http://www.microsoft.com/mac/help.mspx?product=Word&app=4
    I would think you need graphics software for that....
    Carolyn

  • How can I create a link on an image?

    How can I create a link on an image?

    Select your image and in the hyperlinks tool on the toolbar simply type in your site address you want to link to. be sure to include the http:// before the domain name.

  • How can I save a region of an image into another image?

    How can I save a region of an image into another image? Should I use JAI?
    Java2d? Is there an example?
    Thank you.

    Here is what I try, but I find out I just get a black square for my output image, can you please tell me what am I missing?
              ImageIcon file=new ImageIcon("images/clouds.jpg"); // You can't open bmp files
                   // width, height looks correct:
                   System.out.println (" width" + file.getIconWidth());
                   System.out.println (" height" + file.getIconHeight());
                   BufferedImage bi = new BufferedImage(file.getIconWidth(), file.getIconHeight(),
                   BufferedImage.TYPE_INT_RGB);
                   int x = 0;
                   int y = 0;
                   BufferedImage subimage = bi.getSubimage(x, y, 40, 40);
                   File outputFile = new File("newimage.png");
                   ImageIO.write(subimage, "png", outputFile);

  • How can we change the  color of the image for product display for different

    Hi All,
    How can we change the  color of the image for product display for different colors, to be displayed on site.
    jeff

    Hi priya,
    The requirement that you have stated is not a standard feature in ISA CRM. In order to do the same, you will need to modify the standard ISA code in Java. A common path for the solution would be as follows:
    1. Colours
        a. Maintain a text type for Color under the object - PCAT_ITM in Customizing.
        b. Modify the standard search of ISA to search within your new text type as well. (In standard it only searches in Description.
       c. Maintain all shirts colour data in the new type created in step a.
       d. Your requirement will be done!
    2. Price
      a. Use list prices for your shop and assign the appropriate condition type, acces in your catalog.
      b. Modify the standard search of ISA to search on the list prices as well.
      c. This too will be done!
    3. Accessories - This is very tricky, and will require some exploration. However, here's my opinion,
    a. Search for the standard function module, which will return the accessories when provided the product as an input.
    b. Modify this function module according to your requirement and ensure that it can be accessed remotely.
    c. Modify the JSP as in steps 1b and 2b above to call this new remote-enabled function module.
    d. Now you're done!!
    The ISA modification part is not so simple, you need a really good guy like "Sateesh Chandra" who'll be able to handle your requirements. This is all I could manage, hope it is some help to you!
    Thanks & Regards,
    Nelson.

Maybe you are looking for