繼續(xù)牛刀(有圖片預(yù)覽的JFileChooser)

          效果圖:



          package ImageFileChoosers;

          import java.awt.Color;
          import java.awt.Dimension;
          import java.awt.Graphics;
          import java.awt.Image;
          import java.beans.PropertyChangeEvent;
          import java.beans.PropertyChangeListener;
          import java.io.File;
          import java.io.IOException;

          import javax.imageio.ImageIO;
          import javax.swing.JFileChooser;
          import javax.swing.JPanel;

          public class ImagePreview extends JPanel implements PropertyChangeListener {
               
          private JFileChooser jfc;
               
          private Image img;

               
          public ImagePreview(JFileChooser jfc) {
                    
          this.jfc = jfc;
                    Dimension sz 
          = new Dimension(200,200);
                    setPreferredSize(sz);
               }


               
          public void propertyChange(PropertyChangeEvent evt) {
                   
          try {
                         System.out.println(
          "updating");
                         File file 
          = jfc.getSelectedFile();
                         updateImage(file);
                        }
           catch (IOException ex) {
                             System.out.println(ex.getMessage());
                             ex.printStackTrace();
                    }

               }

               
          public void updateImage(File file) throws IOException {
                
          if(file == null{
                     
          return;
                }

                img 
          = ImageIO.read(file);
                    repaint();
               }

               
          public void paintComponent(Graphics g) {
                     g.setColor(Color.gray);
                     g.fillRect(
          0,0,getWidth(),getHeight());
                
          if(img != null{
                     
          int w = img.getWidth(null);
                     
          int h = img.getHeight(null);
                     
          int side = Math.max(w,h);
                     
          double scale = 200.0/(double)side;
                     w 
          = (int)(scale * (double)w);
                     h 
          = (int)(scale * (double)h);
                     
          //將這個(gè)Image畫出來
                     g.drawImage(img,0,0,w,h,null);
             
                     String dim 
          = w + " x " + h;
                     g.setColor(Color.black);
                     g.drawString(dim,
          31,196);
                     g.setColor(Color.white);
                     g.drawString(dim,
          30,195);
                     g.setColor(Color.black);
                     
          //這句隨便你加不加顯示在預(yù)覽窗口的
                     g.drawString("Swing如此漂亮",30,100);
                }

           }

                
          public static void main(String[] args) {
                     JFileChooser jfc 
          = new JFileChooser();
                     ImagePreview preview 
          = new ImagePreview(jfc);
                     jfc.addPropertyChangeListener(preview);
                     jfc.setAccessory(preview);
                     jfc.showOpenDialog(
          null);
                }


          }


          posted on 2008-05-20 13:16 相信 閱讀(1253) 評(píng)論(3)  編輯  收藏 所屬分類: Swing文章

          評(píng)論

          # re: 繼續(xù)牛刀(有圖片預(yù)覽的JFileChooser) 2008-05-21 19:34 lzw

          不好,我選擇一個(gè)圖片后,程序就結(jié)束了  回復(fù)  更多評(píng)論   

          # re: 繼續(xù)牛刀(有圖片預(yù)覽的JFileChooser) 2008-05-21 19:36 相信

          ....................大哥
          我這是JFileChooser
          不是一個(gè)完整的軟件

          JFileChooser選擇文件以后 其他事情就是你的事了
          跟我沒任何關(guān)系.. 請(qǐng)看清楚題目 謝謝  回復(fù)  更多評(píng)論   

          # re: 繼續(xù)牛刀(有圖片預(yù)覽的JFileChooser) 2008-05-21 19:41 lzw

          老大做的不錯(cuò),是我錯(cuò)了  回復(fù)  更多評(píng)論   

          <2008年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          導(dǎo)航

          統(tǒng)計(jì)

          公告

          不顯示applet

          常用鏈接

          留言簿(16)

          我參與的團(tuán)隊(duì)

          隨筆檔案

          文章分類

          文章檔案

          新聞檔案

          相冊(cè)

          swingchina 專業(yè)搞Swing的網(wǎng)站

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 贵州省| 油尖旺区| 郓城县| 孟连| 隆昌县| 清水河县| 修武县| 黔东| 霍州市| 台前县| 微山县| 抚州市| 武陟县| 政和县| 土默特左旗| 咸宁市| 吉隆县| 西安市| 剑川县| 田阳县| 星子县| 鸡泽县| 双流县| 黑龙江省| 香港| 吴旗县| 五华县| 桃园市| 无棣县| 凤庆县| 肇州县| 桃江县| 昌吉市| 永济市| 南通市| 武夷山市| 西平县| 全州县| 阿拉尔市| 新晃| 龙陵县|