继续牛刀(有图片预览的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);
      }


}


posted on 2008-05-20 13:16 相信 阅读(1242) 评论(3)  编辑  收藏 所属分类: Swing文章

评论

# re: 继续牛刀(有图片预览的JFileChooser) 2008-05-21 19:34 lzw

不好,我选择一个图片后,程序就结束了  回复  更多评论   

# re: 继续牛刀(有图片预览的JFileChooser) 2008-05-21 19:36 相信

....................大哥
我这是JFileChooser
不是一个完整的软件

JFileChooser选择文件以后 其他事情就是你的事了
跟我没任何关系.. 请看清楚题目 谢谢  回复  更多评论   

# re: 继续牛刀(有图片预览的JFileChooser) 2008-05-21 19:41 lzw

老大做的不错,是我错了  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 
<2008年5月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

导航

统计

公告

不显示applet

常用链接

留言簿(16)

我参与的团队

随笔档案

文章分类

文章档案

新闻档案

相册

swingchina 专业搞Swing的网站

搜索

最新评论

阅读排行榜

评论排行榜