JavaMan1.java Applet that loads an image from a relative URL. ************************************************************* import java.applet.Applet; import java.awt.*; /** An applet that loads an image from a relative URL. * >>>>>>>>>>>>>>>>>>> public class JavaMan1 extends Applet { private Image javaMan; public void init() { javaMan = getImage(getCodeBase(),"images/Java-Man.gif"); } public void paint(Graphics g) { g.drawImage(javaMan, 0, 0, this); } } >>>>>>>>>>>>>>>>>>>> JavaMan2.java Illustrates loading an image from an absolute URL. ******************** import java.applet.Applet; import java.awt.*; import java.net.*; /** An applet that loads an image from an absolute * URL on the same machine that the applet came from. * *********************** public class JavaMan2 extends Applet { private Image javaMan; public void init() { try { URL imageFile = new URL("http://www.corewebprogramming.com" + "/images/Java-Man.gif"); javaMan = getImage(imageFile); } catch(MalformedURLException mue) { showStatus("Bogus image URL."); System.out.println("Bogus URL"); } } public void paint(Graphics g) { g.drawImage(javaMan, 0, 0, this); } } >>>>>>>>>>>>>>>>>>>>> # JavaMan3.java An application that loads an image from a local file. Uses the following image and two files: * Java-Man.gif which should be placed in images subdirectory. * WindowUtilities.java Simplifies the setting of native look and feel. * ExitListener.java WindowListener to support terminating the application. ******************* JavaMan3.java ******************* import java.awt.*; import javax.swing.*; /** An application that loads an image from a local file. * Applets are not permitted to do this. * ********************** class JavaMan3 extends JPanel { private Image javaMan; public JavaMan3() { String imageFile = System.getProperty("user.dir") + "/images/Java-Man.gif"; javaMan = getToolkit().getImage(imageFile); setBackground(Color.white); } public void paintComponent(Graphics g) { super.paintComponent(g); g.drawImage(javaMan, 0, 0, this); } public static void main(String[] args) { JPanel panel = new JavaMan3(); WindowUtilities.setNativeLookAndFeel(); WindowUtilities.openInJFrame(panel, 380, 390); } } >>>>>>>>>>>>>>>>>> Preload.java An application that demonstrates the effect of preloading an image before drawing. Specify -preload as a command-line argument to preload the image. In this case, the prepareImage method is called to immediately start a thread to load the image. Thus, the image is ready to display when the user later selects the Display Image button. >>>>>>>>>>>>>>>>>>> import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.net.*; /** A class that compares the time to draw an image preloaded * (getImage, prepareImage, and drawImage) vs. regularly * (getImage and drawImage). * * The answer you get the regular way is dependent on the * network speed and the size of the image, but if you assume * you load the applet "long" (compared to the time the image * loading requires) before pressing the button, the drawing * time in the preloaded version depends only on the speed of * the local machine. * ********************** public class Preload extends JPanel implements ActionListener { private JTextField timeField; private long start = 0; private boolean draw = false; private JButton button; private Image plate; public Preload(String imageFile, boolean preload) { setLayout(new BorderLayout()); button = new JButton("Display Image"); button.setFont(new Font("SansSerif", Font.BOLD, 24)); button.addActionListener(this); JPanel buttonPanel = new JPanel(); buttonPanel.add(button); timeField = new JTextField(25); timeField.setEditable(false); timeField.setFont(new Font("SansSerif", Font.BOLD, 24)); buttonPanel.add(timeField); add(buttonPanel, BorderLayout.SOUTH); registerImage(imageFile, preload); } /** No need to check which object caused this, * since the button is the only possibility. */ public void actionPerformed(ActionEvent event) { draw = true; start = System.currentTimeMillis(); repaint(); } // Do getImage, optionally starting the loading. private void registerImage(String imageFile, boolean preload) { try { plate = getToolkit().getImage(new URL(imageFile)); if (preload) { prepareImage(plate, this); } } catch(MalformedURLException mue) { System.out.println("Bad URL: " + mue); } } /** If button has been clicked, draw image and * show elapsed time. Otherwise, do nothing. */ public void paintComponent(Graphics g) { super.paintComponent(g); if (draw) { g.drawImage(plate, 0, 0, this); showTime(); } } // Show elapsed time in textfield. private void showTime() { timeField.setText("Elapsed Time: " + elapsedTime() + " seconds."); } // Time in seconds since button was clicked. private double elapsedTime() { double delta = (double)(System.currentTimeMillis() - start); return(delta/1000.0); } public static void main(String[] args) { JPanel preload; if (args.length == 0) { System.out.println("Must provide URL"); System.exit(0); } if (args.length == 2 && args[1].equals("-preload")) { preload = new Preload(args[0], true); } else { preload = new Preload(args[0], false); } WindowUtilities.setNativeLookAndFeel(); WindowUtilities.openInJFrame(preload, 1000, 750); } } <<<<<<<<<<<<<<<<<<
Loading Images
Permanent link to this article: http://bangla.sitestree.com/loading-images/