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);
           //將這個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);
           //這句隨便你加不加顯示在預覽窗口的
           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);
      }

}

發佈了26 篇原創文章 · 獲贊 7 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章