<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Pudgy's World
    posts - 13,  comments - 16,  trackbacks - 0
    Recently, I am working on graphic project. This project I faced is a big challenge to me. Here is a sloution to show the progress bar when loading the image from the net.
    PS:
    If you install the JAI, it will break the progress interrupt.
    See this in Sun's Bug Database
    http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4842452


      1 import java.awt.BorderLayout;
      2 import java.awt.event.ActionEvent;
      3 import java.awt.event.ActionListener;
      4 import java.awt.image.BufferedImage;
      5 import java.io.IOException;
      6 import java.net.MalformedURLException;
      7 import java.net.URL;
      8 import java.util.Iterator;
      9 
     10 import javax.imageio.ImageIO;
     11 import javax.imageio.ImageReader;
     12 import javax.imageio.event.IIOReadProgressListener;
     13 import javax.imageio.stream.ImageInputStream;
     14 import javax.swing.*;
     15 
     16 public class IIOProgressTest
     17 {
     18     public static void main(String[] args)
     19     {
     20         try {
     21             UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
     22         } catch (Exception e) {
     23             e.printStackTrace();
     24         }
     25 
     26         final JLabel imageLabel = new JLabel();
     27         JScrollPane scrollPane = new JScrollPane(imageLabel);
     28         final JButton startBtn = new JButton("Load Image");
     29         final JProgressBar progressBar = new JProgressBar();
     30         progressBar.setVisible(false);
     31         JPanel p = new JPanel(new BorderLayout(55));
     32         p.add(startBtn, BorderLayout.WEST);
     33         p.add(progressBar, BorderLayout.CENTER);
     34         
     35         final IIOReadProgressListener progressListener = new IIOReadProgressListener() {
     36             public void imageStarted(ImageReader source, int imageIndex)
     37             {
     38                 SwingUtilities.invokeLater(new Runnable()
     39                 {
     40                     public void run()
     41                     {
     42                         startBtn.setEnabled(false);
     43                         progressBar.setValue(0);
     44                         progressBar.setVisible(true);
     45                         invalidate();
     46 
     47                     }
     48                 });
     49             }
     50             public void imageProgress(ImageReader source, final float percentageDone)
     51             {
     52                 SwingUtilities.invokeLater(new Runnable()
     53                 {
     54                     public void run()
     55                     {
     56                         System.out.println("percentageDone" + percentageDone);
     57                         progressBar.setValue((int) (percentageDone));
     58                     }
     59                 });
     60             }
     61             public void imageComplete(ImageReader source) 
     62             {
     63                 SwingUtilities.invokeLater(new Runnable()
     64                 {
     65                     public void run()
     66                     {
     67                         startBtn.setEnabled(true);
     68                         progressBar.setValue(100);
     69                         progressBar.setVisible(false);
     70                     }
     71                 });
     72             }
     73 
     74             public void sequenceStarted(ImageReader source, int minIndex) {}
     75             public void sequenceComplete(ImageReader source) {}
     76             public void thumbnailStarted(ImageReader source, int imageIndex, int thumbnailIndex) {}
     77             public void thumbnailProgress(ImageReader source, float percentageDone) {}
     78             public void thumbnailComplete(ImageReader source) {}
     79             public void readAborted(ImageReader source) {}
     80         };
     81 
     82         startBtn.addActionListener(new ActionListener()
     83         {
     84             public void actionPerformed(ActionEvent e)
     85             {
     86                 final String urlStr = JOptionPane.showInputDialog(
     87                         SwingUtilities.getWindowAncestor(startBtn), "Input image URL");
     88                 if (urlStr == null) {
     89                     return;
     90                 }
     91 
     92                 new Thread() {
     93                     public void run()
     94                     {
     95                         try {
     96                             URL url = new URL(urlStr);
     97                             ImageInputStream iis = ImageIO.createImageInputStream(url.openStream());
     98                             Iterator iter = ImageIO.getImageReaders(iis);
     99                             if (iter.hasNext()) {
    100                                 ImageReader reader = (ImageReader) iter.next();
    101                                 reader.setInput(iis);
    102                                 reader.addIIOReadProgressListener(progressListener);
    103                                 BufferedImage image = reader.read(reader.getMinIndex());
    104                                 final ImageIcon icon = new ImageIcon(image);
    105 
    106                                 SwingUtilities.invokeLater(new Runnable()
    107                                 {
    108                                     public void run()
    109                                     {
    110                                         imageLabel.setIcon(icon);
    111                                         imageLabel.revalidate();
    112                                     }
    113                                 });
    114                             }
    115                         } catch (MalformedURLException e) {
    116                             e.printStackTrace();
    117                         } catch (IOException e) {
    118                             e.printStackTrace();
    119                         }
    120                     }
    121                 }.start();
    122             }
    123         });
    124 
    125         JFrame f = new JFrame("IIOProgressTest");
    126         f.getContentPane().setLayout(new BorderLayout(55));
    127         f.getContentPane().add(scrollPane, BorderLayout.CENTER);
    128         f.getContentPane().add(p, BorderLayout.SOUTH);
    129         f.setSize(800600);
    130         f.setLocationRelativeTo(null);
    131         f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    132         f.setVisible(true);
    133     }
    134 }
    135 

    posted on 2005-08-16 12:19 Pudgy's World 閱讀(907) 評論(0)  編輯  收藏 所屬分類: ImageIO

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    <2005年8月>
    31123456
    78910111213
    14151617181920
    21222324252627
    28293031123
    45678910

    常用鏈接

    留言簿(1)

    隨筆分類(13)

    隨筆檔案(13)

    文章分類(4)

    文章檔案(5)

    相冊

    Developer

    Favorite blogs

    搜索

    •  

    積分與排名

    • 積分 - 22386
    • 排名 - 1627

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲精品国产成人| 亚洲福利在线观看| 亚洲熟妇AV一区二区三区宅男| 污污网站免费观看| 亚洲伊人久久大香线蕉苏妲己| 无码人妻久久一区二区三区免费| 久久亚洲精品无码| 精品成在人线AV无码免费看| 亚洲欧洲自拍拍偷午夜色| 久久久久久免费视频| 亚洲色成人网站WWW永久四虎| 无码中文字幕av免费放| 亚洲依依成人亚洲社区| 国产精品jizz在线观看免费 | 亚洲精品无码久久毛片波多野吉衣 | 91在线精品亚洲一区二区| 最近2022中文字幕免费视频| 色在线亚洲视频www| 精品久久久久久久免费加勒比| 美女18毛片免费视频| 亚洲情XO亚洲色XO无码| 91视频免费网址| 亚洲熟妇无码AV不卡在线播放| 国产大片免费观看中文字幕| 91成人免费福利网站在线| 亚洲精品福利网站| 日韩激情无码免费毛片| 国产免费久久久久久无码| 亚洲日本香蕉视频观看视频| 日韩高清在线免费看| 狠狠躁狠狠爱免费视频无码| 中文字幕亚洲综合久久| 日韩在线免费播放| 国产一级淫片a免费播放口| 亚洲综合色区中文字幕| 亚洲国产精品无码久久久久久曰| 久久美女网站免费| 亚洲av无码专区在线电影| 久久精品国产亚洲麻豆| 免费视频中文字幕| 国产精品网站在线观看免费传媒|