JFileChooser为用户提供了一个简单的文件选择器,就张这个样子,下图所示:
JLabel headIcon = new JLabel();
headIcon.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(new File("."));
int result = chooser.showOpenDialog(null);
if(result==JFileChooser.APPROVE_OPTION){
String name = chooser.getSelectedFile().getPath();
ImageIcon icon = new ImageIcon(name);
//按默认比例缩小图片以适应JLabel
/*下面这句意思是:得到此图标的 Image(image.getImage());
在此基础上创建它的缩放版本,缩放版本的宽度,高度与JLble一致(getScaledInstance(width, height,Image.SCALE_DEFAULT ))
最后该图像就设置为得到的缩放版本(image.setImage)
*/
Image image = icon.getImage();
Image newImage = image.getScaledInstance(headIcon.getWidth(), headIcon.getHeight(), Image.SCALE_DEFAULT);
icon.setImage(newImage);
headIcon.setIcon(icon);
}
}
});
代码解读:
chooser.setCurrentDirectory(new File("."));//设置当前目录
int result = chooser.showOpenDialog(null);//当选择“打开”,result=0,对应JFileChooser.APPROVE_OPTION ;选择“取消”,result=1;
获取图像
String name = chooser.getSelectedFile().getPath();
ImageIcon icon = new ImageIcon(name);
将此图片按比列缩小形成一个新图片
Image image = icon.getImage();
Image newImage = image.getScaledInstance(headIcon.getWidth(), headIcon.getHeight(), Image.SCALE_DEFAULT);
再将此图片放到JLabel中,实现头像功能
icon.setImage(newImage);
headIcon.setIcon(icon);
end