Java JFileChooser类(文件选择)

简介

JFileChooser类提供了一个供用户选择文件或文件夹的对话框。

构造方法

JFileChooser():构造一个指向用户默认目录的 JFileChooser。

JFileChooser(File currentDirectory):使用给定的 File 作为路径来构造一个 JFileChooser。

利用该类创建文件选择对话框以及获取用户选择文件的基本步骤

1)创建一个JFileChooser类的对象。

2)默认情况下每次只能选择一个文件,如果希望允许同时选择多个文件,可以通过调用方法setMultiSelectionEnabled(boolean b)设置,将入口参数设为true即表示允许多选。

3)默认情况下只允许选择文件,如果希望允许选择文件夹,可以通过调用方法setFileSelection- Mode(int mode)设置,入口参数可选的静态常量有FILES_ONLY(只允许选择文件)、DIRECTORIES_ ONLY(只允许选择路径)和FILES_AND_DIRECTORIES(均可选择)。

4)如果只希望在对话框中列出指定类型的文件,可以调用setFileFilter(FileFilter filter)方法设置文件过滤器。

5)设置完成后调用showOpenDialog(Component parent)方法显示对话框,该方法将返回一个int型值,用来判断用户是否选择了文件或路径。

6)如果用户选择了文件或路径,可以通过方法getSelectedFile()getSelectedFiles()获得,方法getSelectedFile()返回的是File对象,方法getSelectedFiles()返回的是File型数组。

常用方法:

setFileSelectionMode(int mode)设置 JFileChooser,以允许用户只选择文件、只选择目录,或者可选择文件和目录,入口参数mode的值:FILES_AND_DIRECTORIES(指示显示文件和目录)、FILES_ONLY(指示仅显示文件)、DIRECTORIES_ONLY(指示仅显示目录)

showDialog(Component parent,String approveButtonText):弹出具有自定义 approve 按钮的自定义文件选择器对话框。

showOpenDialog(Component parent):弹出一个 "Open File" 文件选择器对话框。

showSaveDialog(Component parent):弹出一个 "Save File" 文件选择器对话框。

setMultiSelectionEnabled(boolean b):设置文件选择器,以允许选择多个文件。

getSelectedFiles():如果将文件选择器设置为允许选择多个文件,则返回选中文件的列表(File[])。

getSelectedFile():返回选中的文件。

文件过滤器

如果只希望在对话框中列出指定类型的文件,可以调用setFileFilter(FileFilter filter)方法设置文件过滤器。javax.swing.filechooser.FileFilter类是一个抽象类,该类的具体定义如下:

public abstract class FileFilter {

    public abstract boolean accept(File f);

    public abstract String getDescription();

}

 例:通过文件选择器实现选择文件功能(点击上传按钮弹出文件选择对话框,选择相应的文件单击打开按钮在文本框区域显示选择的文件名)

import java.util.*;
import java.awt.*;
import java.awt.event.*;
import java.io.File;

import javax.swing.*;

public class t3 extends JFrame{
	
	private JTextField textField;
	private JPanel panel = new JPanel();
	private JFileChooser fileChooser = new JFileChooser();
	
	public t3() {
		setTitle("选项卡面板");
		setBounds(400, 400, 400, 400);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		final JLabel label = new JLabel();
		label.setText("文件:");
		panel.add(label);
		
		textField = new JTextField();
		textField.setColumns(20);
		panel.add(textField);
		
		final JButton button = new JButton("上传");
		button.addActionListener(new ActionListener() {
			
			public void actionPerformed(ActionEvent e) {
				
				int i = fileChooser.showOpenDialog(getContentPane());// 显示文件选择对话框
				
				// 判断用户单击的是否为“打开”按钮
				if (i == JFileChooser.APPROVE_OPTION) {
					
					File selectedFile = fileChooser.getSelectedFile();// 获得选中的文件对象
					textField.setText(selectedFile.getName());// 显示选中文件的名称
				}
			}
		});
		panel.add(button);
		
		add(panel, BorderLayout.NORTH);
		setVisible(true);
	}
	
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		t3 test = new t3();

	}

}

 例:文件选择对话框利用文件过滤器对文件进行了过滤,使文件选择对话框中只列出格式为JPG或GIF格式的图片,并且将选中的图片显示到面板上面。

import java.util.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;

import javax.swing.*;
import javax.swing.filechooser.*;
import javax.swing.filechooser.FileFilter;

public class t3 extends JFrame{
	
	public t3() {
		setTitle("选项卡面板");
		setBounds(400, 400, 400, 400);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		final JLabel label = new JLabel("双击面板任意一处选择照片(JPG/GIF)",SwingConstants.CENTER);//设置标签文字居中显示
		label.addMouseListener(new MouseAdapter() {
			
			JFileChooser fileChooser;
			{
				fileChooser = new JFileChooser();// 创建文件选择对话框
				FileFilter filter = new FileNameExtensionFilter("图像文件(JPG/GIF)", "JPG", "JPEG", "GIF");// 设置文件过滤器,只列出JPG或GIF格式的图片
				fileChooser.setFileFilter(filter);
			}
			
			public void mouseClicked(MouseEvent e) {
				if (e.getClickCount() == 2) {
					
					int i = fileChooser.showOpenDialog(getContentPane());// 显示文件选择对话框
					
					// 判断用户单击的是否为“打开”按钮
					if (i == JFileChooser.APPROVE_OPTION) {
						
						File selectedFile = fileChooser.getSelectedFile();// 获得选中的图片对象
						label.setIcon(new ImageIcon(selectedFile.getAbsolutePath()));// 将图片显示到标签上
						label.setText(null);
					}
				}
			}
		});
		
		add(label);
		setVisible(true);
	}
	
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		t3 test = new t3();

	}

}

 

猜你喜欢

转载自blog.csdn.net/qq_36761831/article/details/81489699