⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imagefilechooser.java

📁 此文档针对开发人员和测试人员。第二章对软件进行了全面的描述。第三章对接口进行了分析。第四章对软件实现的功能进行概述。第五章对软件后续开发实现提出的要求。第六章提出其他一些在软件开发过程中需要注意的问题
💻 JAVA
字号:
package com.ciash.common.gui;


import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.filechooser.FileFilter;
import java.io.File;
import com.ciash.common.gui.event.ImageFileChangeListener;
import java.util.Vector;
import com.ciash.common.gui.event.ImageFileChangeEvent;


/**
 * 图片文件选择器
 */

public class ImageFileChooser
    extends JPanel {

    private JTextField jTextField1 = new JTextField();

    private JButton jButton1 = new JButton();

    private GridBagLayout gridBagLayout1 = new GridBagLayout();

    private JFileChooser chooser = new JFileChooser();

    private File file;

    Filter filter = new Filter();

    private Vector listenerVector = new Vector();

    public ImageFileChooser() {
        try {
            jbInit();
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }

    private void jbInit() throws Exception {
        jTextField1.setEditable(false);
        jTextField1.setSelectionStart(11);
        jTextField1.setText("");
        jButton1.setVerifyInputWhenFocusTarget(true);
        jButton1.setText("浏览");
        this.setLayout(gridBagLayout1);
        this.add(jTextField1, new GridBagConstraints(0, 0, 1, 1, 1.0, 0.0
            , GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL
            , new Insets(8, 12, 11, 0), 203, 5));
        this.add(jButton1, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0
            , GridBagConstraints.CENTER, GridBagConstraints.NONE
            , new Insets(8, 10, 11, 12), 21, 0));
        chooser.setFileFilter(filter);
        chooser.setMultiSelectionEnabled(false);
        jButton1.addActionListener(new ButtonListener());
    }

    public File getSelectFile() {
        return file;
    }

    public void setSelectFile(File file) {
        if (filter.accept(file)) {
            chooser.setSelectedFile(file);
            jTextField1.setText(file.getAbsolutePath());
            this.file = file;
        }
        else {
            System.err.println("该容器只能装载jpg以及gif文件");
        }
    }

    private class ButtonListener
        implements ActionListener {

        public void actionPerformed(ActionEvent actionEvent) {
            if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
                file = chooser.getSelectedFile();
                if(file.exists()){
                    jTextField1.setText(file.getAbsolutePath());
                    for (int i = 0; i < listenerVector.size(); i++) {
                        ImageFileChangeListener listener;
                        listener = (ImageFileChangeListener) listenerVector.get(
                            i);
                        ImageFileChangeEvent event = new ImageFileChangeEvent(
                            file.getAbsolutePath());
                        listener.imageFilaChange(event);
                    }
                }
                else {
                    JOptionPane.showMessageDialog(chooser, "文件不存在,请重新选择!"
                        , "错误!", JOptionPane.ERROR_MESSAGE);
                }
            }
            else {
                file = null;
            }
        }
    }


    private class Filter
        extends FileFilter {
        public boolean accept(File file) {
            String name = file.getName().toLowerCase();
            if (name.endsWith(".jpg") || name.endsWith(".gif")
                || file.isDirectory()) {
                return true;
            }
            return false;
        }

        public String getDescription() {
            return "GIF 图形文件 | JPG 图形文件";
        }
    }

    public void addImageFileChangeListener(ImageFileChangeListener listener){
        this.listenerVector.add(listener);
    }

    public void removeImageFileChangeListener(ImageFileChangeListener listener){
        this.listenerVector.remove(listener);
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -