一个文件对话框组件JFileChooser使用的例程

文件对话框组件JFileChooser使用例程

文件对话框组件JFileChooser,可用于“打开文件”、“保存文件”。组件JFileChooser不依赖于系统平台环境,它是纯Java实现的组件,在所有平台上具有完全相同的行为和相同的外观风格。文件对话框组件JFileChooser,可以显示文件和目录,可以让用户浏览文件系统。JFileChooser是一个模式对话框,JFileChooser不是JDialog类的子类,它有三种打开形式,根据不同条件的显示文件对话框的方法调用:
若要显示“打开文件”的对话框,且对话框的标题使用默认的“Open”,需要调用showOpenDialog(Component parent)方法;
若要显示“保存文件”的对话框,且对话框的标题使用默认的“Save”,则要调用showSaveDialog(Component parent)方法;
若要定制显示文件对话框的标题,则要调用showDialog(Component parent, String text)方法。其中参数text指定要显示的标题字符串。

文件对话框组件JFileChooser有多个构造器,常用的有以下三种:
1.JFileChooser():默认构造器,创建一个指向用户默认工作目录的JFileChooser。
2.JFileChooser( File dirPath ):以File类型目录路径为参数创建指定路径的JFileChooser。
3.JFileChooser( String path ):以字符串的目录路径为参数创建指定路径的JFileChooser。

JFileChooser常用的方法:
void setFileFilter(FileFilter filter) 该方法用来设置文件扩展名过滤器;
void setFileSelectionMode( int mode ) 该方法用来设置选择的文件类型。JFileChooser定义了三个静态常量表示三种文件类型的选择模式:FILES_ONLY(只能选文件)、DIRECTORIES_ONLY(只能选文件夹)、FILES_AND_DIRECTORIES(二者皆可)。
void setMultiSelectionEnabled( boolean b ) 该方法设置是否可以同时选择多个文件,默认值是false。
File getSelectedFile() 当不支持选择多个文件时,该方法可取得选定的文件信息。
File[] getSelectedFiles() 当支持多个选择时,该方法可取得多选的文件信息。

JFileChooser定义了三个静态常量用于表示用户操作的返回值:
APPROVE_OPTION:表示确认或保存
CANCEL_OPTION:表示取消或关闭
ERROR_OPTION:表示出现错误

使用文件对话框获取用户选择通常有以下几个步骤:
创建文件对话框JFileChooser对象,并设置文件对话框当前目录:
例如,设置当前工作目录作为文件对话框当前目录:
JFileChooser chooser = new JFileChooser(“.”);
下面二行代码可实现上面这行代码相同的效果:
JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(new File(“.”)); //以当前工作目录为参数

设定文件对话框JFileChooser的文件扩展名过滤器setFileFilter(FileFilter filter)
设置的文件类型选择模式setFileSelectionMode( int mode )
按需设定是否可以多选,缺省是单选。chooser.setMultiSelectionEnabled(true);
使用showDialog()方法显示文件对话框
接收用户选择操作的返回值,进行相应的处理。

下面是一个使用示例:
这是例程的程序界面:
程序界面
这是一个演示结果:
一个演示结果
例程源代码:

import static java.awt.BorderLayout.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.File;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.filechooser.FileNameExtensionFilter;
public class JFileChooserDemo extends JFrame {
    private File file;
    
    public JFileChooserDemo() {
    	setSize(300, 100);
        setTitle("文件对话框演示");
        
    	//创建文件选择器
    	JFileChooser chooser = new JFileChooser();
    	//后缀名过滤器
    	FileNameExtensionFilter filter = new FileNameExtensionFilter("文本文件(*.txt,*.TXT)", "txt","TXT");   
    	chooser.setFileFilter(filter); //设置文件扩展名

    	JPanel panel = new JPanel();
        JButton btnSave = new JButton("保存文件");        
        btnSave.setFocusable(false);        
        btnSave.addMouseListener(new MouseAdapter() {            
            @Override        
            public void mouseClicked(MouseEvent e) {
                /*** 弹出一个保存文件的对话框 showDialog()
                 * 需要指定一个父级窗体,或指定为 null。并定制对话框标题
                 * 返回值是 int 类型,接收方法showDialog()返回值
                ***/
                int value=chooser.showDialog(JFileChooserDemo.this,"保存文件");                           
                if (value==JFileChooser.APPROVE_OPTION) { //判断用户是否保存文件
                /*  使用文件句柄(对象),接收返回值。保存文件通常只需处理单选,
                 *  File file=chooser.getSelectedFile();     * ***/
                	file =  chooser.getSelectedFile();
                	String path = file.getAbsolutePath();
                	/***检查path中是否已包含文件扩展名***/
                	boolean flag = false;
                	for (String extension : filter.getExtensions()) {
						if (path.contains(extension)) {
							flag=true;
							break;
						}
					}
                	if (!flag) path += ".txt"; //若不包含扩展名,添加扩展名
                	
                	System.out.println("保存文件全路径: "+path);                 
                }                
            }            
        });
        panel.add(btnSave);
        JButton btnOpen = new JButton("打开文件");        
        btnOpen.setFocusable(false);        
        btnOpen.addMouseListener(new MouseAdapter() {        
            @Override        
            public void mouseClicked(MouseEvent e) {
               //设定为可多选,如果不设定,默认为 false,即只能单选                
                chooser.setMultiSelectionEnabled(true);                                
                int value=chooser.showDialog(JFileChooserDemo.this,"打开文件");                                
                if (value==JFileChooser.APPROVE_OPTION) {
                	/***支持多选时的处理代码 ***/
                    File paths[]=chooser.getSelectedFiles();
                    //显示选择的文件路径信息
                    for (int i = 0; i < paths.length; i++) {
                        System.out.println(paths[i].getAbsolutePath());
                    }
                }
            }
        });
        panel.add(btnOpen);
        add(panel,CENTER);
    	setVisible(true);
	}

	public static void main(String[] args) {
		new JFileChooserDemo();  
	}
}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值