【Java】java学习笔记:【从网络获取图像资源】实现
2014-10-12 12:02
393 查看
JAVA访问网络资源
下面将通过JAVA的URL类来从网上得到图像
//从网络获取图像资源
//InternetAccess.java
import java.awt.*;
//import java.awt.event.*;
import javax.swing.*;
import java.net.*;
public class InternetAccess
{
public static void main(String[] args)
{
ImageFrame frame=new ImageFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//frame.show();//show方法已经过时
frame.setVisible(true);
}
}
class ImageFrame extends JFrame
{
/**
*
*/
private static final long serialVersionUID = 1L;
public static final int WIDTH=300;
public static final int HEIGHT=120;
public ImageFrame()
{
setTitle("InternetAccess");
setSize(WIDTH,HEIGHT);
ImagePanel panel=new ImagePanel();
Container contentPane=getContentPane();
contentPane.add(panel);
}
}
class ImagePanel extends JPanel
{
/**
*
*/
private static final long serialVersionUID = 1L;
private Image image;
URL url;
public ImagePanel()
{
try
{
//指定要获取的资源的URL
url=new URL("http://www.kklinux.com/uploads/090313/2_204213_1.jpg");
}
catch(MalformedURLException e)
{
}
//获取指定URL上的图像
image=Toolkit.getDefaultToolkit().getImage(url);
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
int imageWidth=image.getWidth(this);
int imageHeight=image.getHeight(this);
//在窗口中显示图像
g.drawImage(image, 0, 0, imageWidth, imageHeight, null);
g.drawImage(image,0,0,null);
//显示字符串
g.drawString("正在下载图像...", 100, 80);
}
}
运行结果:
当显示窗口时,先显示字符串,然后才显示图像。这个结果和我们的程序编写次序相反。原因在于JAVA使用了多线程机制。因为下载图像是比较费时的操作,而显示字符串是本地操作,如果不适用多线程,那么必须先等待图像下载完毕,然后字符串才能显示,这样在等待下载图像的过程中,用户恐怕不知道程序现在在做什么。因此采用多线程机制,程序不必一直等待下载操作,而是能够“同时”运行多个操作,这能够使得程序具有很好的界面友好性。
下面将通过JAVA的URL类来从网上得到图像
//从网络获取图像资源
//InternetAccess.java
import java.awt.*;
//import java.awt.event.*;
import javax.swing.*;
import java.net.*;
public class InternetAccess
{
public static void main(String[] args)
{
ImageFrame frame=new ImageFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//frame.show();//show方法已经过时
frame.setVisible(true);
}
}
class ImageFrame extends JFrame
{
/**
*
*/
private static final long serialVersionUID = 1L;
public static final int WIDTH=300;
public static final int HEIGHT=120;
public ImageFrame()
{
setTitle("InternetAccess");
setSize(WIDTH,HEIGHT);
ImagePanel panel=new ImagePanel();
Container contentPane=getContentPane();
contentPane.add(panel);
}
}
class ImagePanel extends JPanel
{
/**
*
*/
private static final long serialVersionUID = 1L;
private Image image;
URL url;
public ImagePanel()
{
try
{
//指定要获取的资源的URL
url=new URL("http://www.kklinux.com/uploads/090313/2_204213_1.jpg");
}
catch(MalformedURLException e)
{
}
//获取指定URL上的图像
image=Toolkit.getDefaultToolkit().getImage(url);
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
int imageWidth=image.getWidth(this);
int imageHeight=image.getHeight(this);
//在窗口中显示图像
g.drawImage(image, 0, 0, imageWidth, imageHeight, null);
g.drawImage(image,0,0,null);
//显示字符串
g.drawString("正在下载图像...", 100, 80);
}
}
运行结果:
当显示窗口时,先显示字符串,然后才显示图像。这个结果和我们的程序编写次序相反。原因在于JAVA使用了多线程机制。因为下载图像是比较费时的操作,而显示字符串是本地操作,如果不适用多线程,那么必须先等待图像下载完毕,然后字符串才能显示,这样在等待下载图像的过程中,用户恐怕不知道程序现在在做什么。因此采用多线程机制,程序不必一直等待下载操作,而是能够“同时”运行多个操作,这能够使得程序具有很好的界面友好性。
相关文章推荐
- java学习笔记:【从网络获取图像资源】实现
- 基于JAVA的水泥三维图像特征提取系统设计与实现 之一 JAVA 3D学习笔记
- Java学习笔记----网络编程(一):获取IP地址和域名
- 学习笔记_Java get和post区别(转载_GET一般用于获取/查询资源信息,而POST一般用于更新资源信息)
- Java学习笔记之网络编程基础-获取本机名称
- OpenCV学习笔记(16)双目测距与三维重建的OpenCV实现问题集锦(一)图像获取与单目定标
- Java网络编程笔记(二):获取网络资源(URL)
- Java学习笔记之网络编程基础-通过URL获取网络图片
- java网络编程学习笔记(四):线程池的实现
- Java学习笔记之实现Runnable接口可以资源共享(卖票系统)
- Android(java)学习笔记201:网络图片浏览器的实现(ANR)
- Android(java)学习笔记204:自定义SmartImageView(继承自ImageView,扩展功能为自动获取网络路径图片)
- Java学习笔记之网络编程基础-通过URLConnection获取HTML页面
- Java学习笔记之网络编程基础-根据域名自动到DNS上获取IP地址
- Java学习笔记之网络编程基础-通过URL获取HTML页面
- java(j2se)学习笔记----如何实现四舍五入?
- Java网络学习资源
- jrawio - 纯 Java 实现对数码相机 RAW 格式数据进行解码获取图像信息
- 传智博客学习笔记15--JAVA网络编程
- Jpcap包的学习笔记(八)如何使用Jpcap 包实现网络监听(下部)