Java Swing中文件选择器的使用

1.文件选择对话框的用户创建经常使用打开和保存文件的对话框,它是一个独立的组件,我们可以使用文件选择器打开文件和保存文件,有时候将图片和文件保存到数据库,可以使用文件选择器获取文件路径,并把文件路径保存到数据库即可。

2.文件选择器代码实例

package com.Swing;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class FileChooserDemo extends JFrame implements ActionListener{

    private JTextArea ta;
    private JFileChooser jfc=new  JFileChooser(new File("."));
    private JButton bOpen,bSave;
    private JScrollPane ps;

    public  FileChooserDemo(){
        ta=new JTextArea(10,20);
        ps=new JScrollPane(ta);
        bOpen=new JButton("选择文件");
        bSave=new JButton("保存文件");

        bOpen.addActionListener(this);
        bSave.addActionListener(this);

        this.add(ps);
        this.add(bOpen);
        this.add(bSave);
        this.setTitle("文件选择器的使用");
        this.setLayout(new FlowLayout(FlowLayout.CENTER,15,10));
        this.setSize(300,300);
        this.setLocationRelativeTo(null);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);


    }

    @Override
    public void actionPerformed(ActionEvent e) {

          JButton jbt= (JButton) e.getSource();
          //1.点击bOpen要做的事为
          if(jbt==bOpen){
              //打开文件选择器对话框
              int status=jfc.showOpenDialog(this);
              //没有选打开按钮结果提示
                 if(status!=JFileChooser.APPROVE_OPTION){
                     ta.setText("没有选中文件");
                 }
                 else{

                     try {
                         //被选中的文件保存为文件对象
                         File file=jfc.getSelectedFile();
                         Scanner scanner=new Scanner(file);
                         String info="";
                         while(scanner.hasNextLine())
                         {

                             String str=scanner.nextLine();
                             info+=str+"\r\n";
                         }
                         //把读取的数据存到文本框中
                         ta.setText(info);

                    } catch (FileNotFoundException e1) {
                        System.out.println("系统没有找到此文件");
                        e1.printStackTrace();
                    }


                 }

            } 
          //表示单击存盘按钮
          else{
                 int re=jfc.showOpenDialog(this);
                 if(re==JFileChooser.APPROVE_OPTION){

                     File f=jfc.getSelectedFile();
                     try {
                        FileOutputStream fsp=new FileOutputStream(f);
                        BufferedOutputStream out=new BufferedOutputStream(fsp);
                        //将文本内容转换为字节存到字节数组
                        byte[] b=(ta.getText()).getBytes();
                        //将数组b中的全部内容写到out流对应的文件中
                        out.write(b, 0, b.length);
                        out.close();


                    } catch (FileNotFoundException e1) {
                        System.out.println("系统没有找到此文件"); 

                    } catch (IOException e1) {

                        System.out.println("IOException");
                    }
                 }


             }

    }
    public static void main(String[] args) {
        FileChooserDemo fc=new FileChooserDemo();

    }



}

输出:
Java Swing中文件选择器的使用_第1张图片

Java Swing中文件选择器的使用_第2张图片

Java Swing中文件选择器的使用_第3张图片

3.show*Dialog()打开和保存文件

package com.jfileChooser;
import java.io.File;

import javax.swing.JFileChooser;
import javax.swing.filechooser.FileSystemView;

public class FileChooser1 {

    public static void main(String[] args) {

        JFileChooser jfc = new JFileChooser(FileSystemView.getFileSystemView().getHomeDirectory());

        int returnValue = jfc.showOpenDialog(null);
        //int returnValue = jfc.showSaveDialog(null);

        if (returnValue == JFileChooser.APPROVE_OPTION) {
            File selectedFile = jfc.getSelectedFile();
            System.out.println(selectedFile.getAbsolutePath());
        }

    }

}

输出:
Java Swing中文件选择器的使用_第4张图片

Java Swing中文件选择器的使用_第5张图片

4.使用setFileSelectionMode(int) 选择文件或目录

package com.jfileChooser;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileSystemView;

public class FileChooser2 {

    public static void main(String[] args) {

        JFileChooser jfc = new JFileChooser(FileSystemView.getFileSystemView().getHomeDirectory());
        jfc.setDialogTitle("选择文件目录保存文件 ");
        jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

        int returnValue = jfc.showSaveDialog(null);
        if (returnValue == JFileChooser.APPROVE_OPTION) {
            if (jfc.getSelectedFile().isDirectory()) {
                System.out.println("你选择的文件目录是: " + jfc.getSelectedFile());
            }
        }

    }

}

Java Swing中文件选择器的使用_第6张图片

5.使用setMultiSelectionEnabled(Boolean)选择多个路径

package com.jfileChooser;
import java.io.File;
import java.util.Arrays;

import javax.swing.JFileChooser;
import javax.swing.filechooser.FileSystemView;
//选择多个文件
public class FileChooser3 {

    public static void main(String[] args) {

        JFileChooser jfc = new JFileChooser(FileSystemView.getFileSystemView().getHomeDirectory());
        jfc.setDialogTitle("同时选取多个文件目录");
        jfc.setMultiSelectionEnabled(true);
        jfc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);

        int returnValue = jfc.showOpenDialog(null);
        if (returnValue == JFileChooser.APPROVE_OPTION) {
            File[] files = jfc.getSelectedFiles();
            System.out.println("已找到目录\n");
            Arrays.asList(files).forEach(x -> {
                if (x.isDirectory()) {
                    System.out.println(x.getName());
                }
            });
            System.out.println("\n- - - - - - - - - - -\n");
            System.out.println("已找到目录\n");
            Arrays.asList(files).forEach(x -> {
                if (x.isFile()) {
                    System.out.println(x.getName());
                }
            });
        }

    }

}

Java Swing中文件选择器的使用_第7张图片

6.使用过滤器Filters限制文件选择器中显示的文件类型

package com.jfileChooser;

import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.filechooser.FileSystemView;

public class FileChooser4 {

    public static void main(String[] args) {

        JFileChooser jfc = new JFileChooser(FileSystemView.getFileSystemView().getHomeDirectory());
        jfc.setDialogTitle("选择图片");
        jfc.setAcceptAllFileFilterUsed(false);
        //限制文件只能显示PNG\JPG格式的图片
        FileNameExtensionFilter filter = new FileNameExtensionFilter("PNG and JPG images", "png", "jpg");
        jfc.addChoosableFileFilter(filter);

        int returnValue = jfc.showOpenDialog(null);
        if (returnValue == JFileChooser.APPROVE_OPTION) {
            System.out.println(jfc.getSelectedFile().getPath());
        }

    }

}

输出
Java Swing中文件选择器的使用_第8张图片

7.使用showDialog()自己设置按钮信息

package com.jfileChooser;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileSystemView;

public class FileChooser5 {

    public static void main(String[] args) {


        JFileChooser jfc = new JFileChooser(FileSystemView.getFileSystemView().getHomeDirectory());
        jfc.setDialogTitle("演示");

        int returnValue = jfc.showDialog(null, "选择");
        if (returnValue == JFileChooser.APPROVE_OPTION) {
            System.out.println(jfc.getSelectedFile().getPath());
        }

    }

}

输出
Java Swing中文件选择器的使用_第9张图片

你可能感兴趣的:(Java-Swing)