zoukankan      html  css  js  c++  java
  • 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使用了多线程机制。因为下载图像是比较费时的操作,而显示字符串是本地操作,如果不适用多线程,那么必须先等待图像下载完毕,然后字符串才能显示,这样在等待下载图像的过程中,用户恐怕不知道程序现在在做什么。因此采用多线程机制,程序不必一直等待下载操作,而是能够“同时”运行多个操作,这能够使得程序具有很好的界面友好性。

  • 相关阅读:
    laravel 解决保存Emoji 表情问题
    下载微信头像下载不了
    微信公众号开发遇到simplexml_load_string 未定义
    部署php的正确姿势
    ubuntu 安装 mysql 的正确姿势
    laravel 部署 前后端分离
    nwjs 解决手指可滑动问题
    Java8新特性Optional、接口中的默认方法与静态方法
    Java设计模式百例
    一位资深程序员大牛给予Java初学者的学习路线建议
  • 原文地址:https://www.cnblogs.com/wintergrass/p/1793374.html
Copyright © 2011-2022 走看看