Creating and Drawing Images |
Often we will want to import images into our program and draw them in a window. This takes a bit more work, and needs the following extra code.
/** * Retrieve an image from file "filename", return the * Image when it has loaded completely. * @param the name of the file containing the image * @return the loaded Image. */ private Image getCompletedImage(String fileName) { Toolkit toolkit = Toolkit.getDefaultToolkit(); Image myImage = toolkit.getImage(fileName); MediaTracker mediaTracker = new MediaTracker(this); mediaTracker.addImage(myImage, 0); try { mediaTracker.waitForID(0); } catch (InterruptedException ie) { System.out.println(ie); System.exit(1); } return myImage; }
Roughly, the method retrieves a default toolkit that has a method that will allow reading in an image in a file with name given by fileName. After the image is fetched with the getImage method, a MediaTracker object is created. The image is added to the media tracker object, which then waits for the loading of the image to be complete. If it fails to complete then an exception will be thrown and the program will exit. Otherwise, when the image is done loading, it will be returned from the method.
You can try to do without the mediaTracker object, but if you try to access info about the image (e.g., ask its width or height), you might not get accurate information.
Image myImage = getCompletedImage("filename.jpg"); g2.drawImage(flowerImage, x, y, this);
where "filename.jpg" should be replaced by the name of the file holding the image. This code should be placed in a paint(g) method or in a method called from the paint method.
Creating and Drawing Images |