java学习笔记:【从网络获取图像资源】实现

JAVA访问网络资源

下面将通过JAVA的URL类来从网上得到图像

 

 1 //从网络获取图像资源
2 //InternetAccess.java
3 import java.awt.*;
4 //import java.awt.event.*;
5 import javax.swing.*;
6 import java.net.*;
7
8 public class InternetAccess
9 {
10 public static void main(String[] args)
11 {
12 ImageFrame frame=new ImageFrame();
13 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
14 //frame.show();//show方法已经过时
15 frame.setVisible(true);
16 }
17 }
18
19 class ImageFrame extends JFrame
20 {
21 /**
22 *
23 */
24 private static final long serialVersionUID = 1L;
25 public static final int WIDTH=300;
26 public static final int HEIGHT=120;
27
28 public ImageFrame()
29 {
30 setTitle("InternetAccess");
31 setSize(WIDTH,HEIGHT);
32
33 ImagePanel panel=new ImagePanel();
34 Container contentPane=getContentPane();
35 contentPane.add(panel);
36 }
37 }
38
39 class ImagePanel extends JPanel
40 {
41 /**
42 *
43 */
44 private static final long serialVersionUID = 1L;
45 private Image image;
46 URL url;
47
48 public ImagePanel()
49 {
50 try
51 {
52 //指定要获取的资源的URL
53 url=new URL("http://www.kklinux.com/uploads/090313/2_204213_1.jpg");
54 }
55 catch(MalformedURLException e)
56 {
57
58 }
59 //获取指定URL上的图像
60 image=Toolkit.getDefaultToolkit().getImage(url);
61 }
62
63 public void paintComponent(Graphics g)
64 {
65 super.paintComponent(g);
66
67 int imageWidth=image.getWidth(this);
68 int imageHeight=image.getHeight(this);
69
70 //在窗口中显示图像
71 g.drawImage(image, 0, 0, imageWidth, imageHeight, null);
72 g.drawImage(image,0,0,null);
73 //显示字符串
74 g.drawString("正在下载图像...", 100, 80);
75 }
76 }

运行结果:

 

当显示窗口时,先显示字符串,然后才显示图像。这个结果和我们的程序编写次序相反。原因在于JAVA使用了多线程机制。因为下载图像是比较费时的操作,而显示字符串是本地操作,如果不适用多线程,那么必须先等待图像下载完毕,然后字符串才能显示,这样在等待下载图像的过程中,用户恐怕不知道程序现在在做什么。因此采用多线程机制,程序不必一直等待下载操作,而是能够“同时”运行多个操作,这能够使得程序具有很好的界面友好性。

posted on 2010-08-05 17:29  COS  阅读(491)  评论(0编辑  收藏  举报