支持图片预览的文件选择对话框
2014-06-11 22:00
267 查看
本实例在文件选择器JFileChooser类的基础上开发了支持图片预览效果的文件选择对话框。在选择图片文件,特别是选择数码相机中的随机命名的图片时极为方便。实例的效果如下:
完整代码如下:
完整代码如下:
package cn.whut.num; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.EventQueue; import java.awt.Image; import java.io.File; import javax.swing.ImageIcon; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.border.LineBorder; import javax.swing.filechooser.FileNameExtensionFilter; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeEvent; import javax.swing.JButton; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; public class PreviewFileDialog extends JFrame { private static final long serialVersionUID = 1L; private JPanel contentPane; private JFileChooser fileChooser; private ImagePreviewer imageLabel; private ImagePreviewer previewer; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { PreviewFileDialog frame = new PreviewFileDialog(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public PreviewFileDialog() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 629, 428); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); contentPane.setLayout(new BorderLayout(0, 0)); setContentPane(contentPane); JPanel panel = new JPanel(); contentPane.add(panel, BorderLayout.NORTH); JButton chooseButton = new JButton( "\u9009\u62E9\u56FE\u7247\u6587\u4EF6"); chooseButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { do_button_actionPerformed(e); } }); panel.add(chooseButton); imageLabel = new ImagePreviewer((JFileChooser) null); contentPane.add(imageLabel, BorderLayout.CENTER); initFileChooser(); } /** * 初始化文件选择器 */ private void initFileChooser() { fileChooser = new JFileChooser();// 创建文件选择器 previewer = new ImagePreviewer(fileChooser);// 创建图片预览标签 fileChooser.setFileFilter(new FileNameExtensionFilter("图片文件", "jpg", "gif", "png")); // 为指定属性变更添加事件监听器 fileChooser.addPropertyChangeListener("SelectedFileChangedProperty", new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent evt) { // 属性改变时设置预览标签的图片 previewer.setImageFile((File) evt.getNewValue()); } }); fileChooser.setAccessory(previewer); } /** * 选择图片文件按钮的事件处理方法 * * @param e */ protected void do_button_actionPerformed(ActionEvent e) { int option = fileChooser.showOpenDialog(this);// 显示打开文件对话框 if (option == JFileChooser.APPROVE_OPTION) { // 获取选择的文件对象 File file = fileChooser.getSelectedFile(); // 更新窗体中图片 imageLabel.setImageFile(file); } } } /** * 自定义图片预览标签 * */ class ImagePreviewer extends JLabel { public ImagePreviewer(JFileChooser chooser) { // 初始大小 setPreferredSize(new Dimension(200, 200)); setHorizontalAlignment(JLabel.CENTER);// 水平居中 setBorder(new LineBorder(Color.GRAY));// 设置边框 setOpaque(true);// 标签不透明 setBackground(Color.WHITE);// 设置背景色 setText("没有设置图片");// 默认文本 } /** * 设置标签图片的方法 * * @param file */ public void setImageFile(File file) { setText("");// 清空图片预览标签的文本 if (file == null) {// 如果文件对象为空 setText("没有设置图片");// 设置默认提示文本 return;// 终止方法 } // 创建图标对象 ImageIcon icon = new ImageIcon(file.getPath()); if (icon.getIconWidth() > getWidth()) {// 设置图标大小 icon = new ImageIcon(icon.getImage().getScaledInstance(getWidth(), -1, Image.SCALE_DEFAULT)); } setIcon(icon);// 为标签设置图标 repaint();// 重新绘制界面 } }
相关文章推荐
- 支持预览的文件选择对话框
- 支持预览的文件选择对话框
- j2se多文件类型选择对话框(本例为图片类型)
- sql2000备份的数据库还原到sql2005后,选择“数据库关系图”提示:此数据库没有有效所有者,因此无法安装数据库关系图支持对象。若要继续,请首先使用“数据库属性”对话框的“文件”页或 Alter AUTHORIZATION 语句将数据库
- 支持选择文件和目录(可多选)的文件对话框CSelectDialog
- 安卓选择图片上传功能 - 支持多选拍照预览等
- 基于ajax的Html5文件上传插件,带进度并支持图片预览
- 安卓选择图片上传功能【支持多选拍照预览等】
- 弹出文件选择对话框(支持多选)
- sql2000备份的数据库还原到sql2005后,选择“数据库关系图”提示:此数据库没有有效所有者,因此无法安装数据库关系图支持对象。若要继续,请首先使用“数据库属性”对话框的“文件”页或 ALTER AUTHORIZATION 语句将数据库所
- 图片选择器, 支持多图选择和图片预览等功能
- MFC点击按钮打开文件选择对话框并获取图片
- springboot搭建文件预览解决方案,支持目前主流格式office文件,txt文件,png,jpg等图片以及压缩文件的在线预览功能
- 【web】js添加附件功能(选择图片文件有预览功能)——添加附件-demo02
- 对于支持上传文件的手机浏览器出现的图片不能预览问题的解决办法
- 解决eWebEditor上传图片提示:请选择一个有效的文件,支持的格式有(GIF|JPG|JPEG|BMP|PNG)!
- 解决eWebEditor上传图片提示:请选择一个有效的文件,支持的格式有(GIF|JPG|JPEG|BMP|PNG)!
- swift版图片选择器,支持图片多选,视频预览、照片预览、屏蔽视频文件、重置选中状态、预览、异步下载图片
- 本地图片预览代码(支持 IE6、IE7)
- File文件控件,选中文件(图片,flash,视频)立即预览显示