版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
!-分类:Java学习笔记JFileChooser()构造一个指向用户默认目录的JFileChooser。谢谢阅读JFileChooser(File currentDirectory)谢谢阅读使用给定的File作为路径来构造一个JFileChooser。谢谢阅读setFileSelectionMode(int mode)精品文档放心下载设置JFileChooser,以允许用户只选择文件、只选择目录,或者可选择文感谢阅读件和目录。mode参数:FILES_AND_DIRECTORIES 指示显示文件和目录。感谢阅读FILES_ONLY 指示仅显示文件。DIRECTORIES_ONLY 指示仅显示目录。showDialog(Component parent,String approveButtonText)精品文档放心下载弹出具有自定义approve按钮的自定义文件选择器对话框。精品文档放心下载showOpenDialog(Component parent)精品文档放心下载弹出一个"OpenFile"文件选择器对话框。精品文档放心下载showSaveDialog(Component parent)精品文档放心下载弹出一个"SaveFile"文件选择器对话框。谢谢阅读setMultiSelectionEnabled(boolean b)精品文档放心下载设置文件选择器,以允许选择多个文件。getSelectedFiles()如果将文件选择器设置为允许选择多个文件,则返回选中文件的列表(File[])。感谢阅读getSelectedFile()返回选中的文件。!-packagecom.liang;importjava.awt.event.ActionEvent;精品文档放心下载importjava.awt.event.ActionListener;谢谢阅读importjava.io.File;importjavax.swing.JButton;精品文档放心下载importjavax.swing.JFileChooser;精品文档放心下载importjavax.swing.JFrame;感谢阅读importjavax.swing.JLabel;谢谢阅读publicclassFileChooserextendsJFrameimplementsActionListener{JButtonopen=null;谢谢阅读publicstaticvoidmain(String[]args){谢谢阅读newFileChooser();}publicFileChooser(){open=newJButton("open");this.add(open);this.setBounds(400,200,100,100);精品文档放心下载this.setVisible(true);!-this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);精品文档放心下载open.addActionListener(this);感谢阅读}@OverridepublicvoidactionPerformed(ActionEvente){感谢阅读//TODOAuto-generatedmethodstub精品文档放心下载JFileChooserjfc=newJFileChooser();精品文档放心下载jfc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);感谢阅读jfc.showDialog(newJLabel(),"选择");谢谢阅读Filefile=jfc.getSelectedFile();感谢阅读if(file.isDirectory()){System.out.println("文件夹:"+file.getAbsolutePath());谢谢阅读}elseif(file.isFile()){System.out.println("文件:"+file.getAbsolutePath());谢谢阅读}System.out.println(jfc.getSelectedFile().getName());精品文档放心下载}}JFileChooser效果图如下:!-其实JFileChooser基本使用方法还是很简单的,下面写两个示例看了就明白了,如果还要谢谢阅读增加一些功能,我们还可以添加过滤器,只显示过滤后的文件。还可以再保存的时候,如果感谢阅读保存的是目录里已经存在的文件,那么对话框不会关闭,并且弹出一个JOptionPane提示谢谢阅读用户是否保存文件。打开文件对话框:importjava.io.File;importjavax.swing.JFileChooser;谢谢阅读importjavax.swing.filechooser.FileFilter;谢谢阅读publicclassFileChooserTest{谢谢阅读!-publicstaticvoidmain(String[]args){精品文档放心下载//首先是创建JFileChooser对象,里面带个参数,表示默认打开的目录,这里是默认打开谢谢阅读当前文件所在的目录。JFileChooserfile=newJFileChooser(".");谢谢阅读//下面这句是去掉显示所有文件这个过滤器。file.setAcceptAllFileFilterUsed(false);感谢阅读//添加excel文件的过滤器file.addChoosableFileFilter(newExcelFileFilter("xls"));谢谢阅读//添加exe文件的过滤器file.addChoosableFileFilter(newExcelFileFilter("exe"));精品文档放心下载/*使用showOpenDialog()方法,显示出打开选择文件的窗口,当选择了某个文件后,或者关闭此窗口那么都会返回一个谢谢阅读整型数值,如果返回的是0,代表已经选择了某个文件。如果返回1代表选择了取消按钮或者直接关闭了窗口*/谢谢阅读intresult=file.showOpenDialog(null);精品文档放心下载/*JFileChooser.APPROVE_OPTION是个整型常量,代表0。就是说当返回0的值我们才谢谢阅读执行相关操作,否则什么也不做。if(result==JFileChooser.APPROVE_OPTION)感谢阅读{/*获得你选择的文件绝对路径。并输出。当然,我们获得这个路径后还可以做很多的事。感谢阅读Stringpath=file.getSelectedFile().getAbsolutePath();System.out.println(path);精品文档放心下载}else{System.out.println("你已取消并关闭了窗口!");谢谢阅读}}/*因为我们需要创建一个文件的过滤器,以便让文件对话框显示我们指定的文件。这里我们就以Excel文件和exe文件举例。精品文档放心下载那么要做到这点我们就需要重写FileFilter类的accept来设置相关的过滤器。这个继承类你可以写成外部类、内部类甚至是精品文档放心下载匿名内部类。我这里写成了一个内部类的形式。因为是在main方法使用他,因此这个类也要定义成静态的。谢谢阅读privatestaticclassExcelFileFilterextendsFileFilter{感谢阅读!-Stringext;//构造方法的参数是我们需要过滤的文件类型。比如excel文件就是xls,exe文件是exe.谢谢阅读ExcelFileFilter(Stringext){感谢阅读this.ext=ext;}/*这个方法就是重写FileFilter类的方法,参数是File对象,一般这个参数是如何传入的我们可以不用关心。他返回一个布尔型。如果为真表示该文件符合过滤设置,那么就会显示在当前目录下,如果为假就会被过滤掉。谢谢阅读publicbooleanaccept(Filefile){精品文档放心下载//首先判断该目录下的某个文件是否是目录,如果是目录则返回true,即可以显示在目录下。谢谢阅读if(file.isDirectory()){returntrue;}//获得某个文件的文件名,然后使用lastIndexOf()来获得这个文件名字符串中'.'这个字符最后一次出现的位置。并且通过它返回的一个整型来判断该文件是否符合*.*这中文件+文件名的格式,如果不符合那么就不显示这个文件。如果符合,那么就将'.'字符后面的字符串提取出来与过滤的文件名相比较,如果相等则符合该文件格式,并显示出来。如果不相等那么就将其过滤掉。*/谢谢阅读StringfileName=file.getName();谢谢阅读intindex=fileName.lastIndexOf('.');感谢阅读if(index>0&&index<fileName.length()-1)精品文档放心下载{Stringextension=fileName.substring(index+1).toLowerCase();精品文档放心下载if(extension.equals(ext))精品文档放心下载returntrue;}returnfalse;}/*这个方法也是重写FileFilter的方法,作用是在过滤名那里显示出相关的信息。这个与我们谢谢阅读过滤的文件类型想匹配,通过这些信息,可以让用户更清晰的明白需要过滤什么类型的文件。谢谢阅读*/publicStringgetDescription(){谢谢阅读if(ext.equals("xls")){!-return"MicrosoftExcel文件(*.xls)";感谢阅读}if(ext.equals("exe")){return"可执行文件(*.exe)";}return"";}}}打开选择文件的对话框就建立好了。但是上面的程序还有瑕疵。因为只有当用户点取消或关闭该窗口时才不会执行任何操作。而如果用户在对话框里输入的文件在当前目录中不存在时,那么窗口依然会关闭,这时可能就需要在程序中再来做判断。那么可不可以在当用户输入错误的文件名后,窗口不会关闭,而是不执行任何操作或者弹出个对话框提示用户,可以看看大多数window程序中的选择对话框都是这么做的,其实要实现这个功能也不难,只需要再重写一下JFileChooser类的approveSelection()方法就行了。精品文档放心下载我们将上面的程序做下修改,首先还是需要创建一个继承于JFileChooser的类,这个类可以写成外部或者内部类,我们这里依然写为内部类,注意,如果需要在静态方法中调用它,则需要将它设置为静态的。感谢阅读privatestaticclassMyChooserextendsJFileChooser{谢谢阅读MyChooser(Stringpath){super(path);}/**重载JFileChooser的方法,当在文件选择对话框中,并在当前精品文档放心下载目录下没有找到输入的文件,则对话框不会关闭。直到选择的文件在当前选择的目录下,才关闭对话框,并执行后面的操作。谢谢阅读*/publicvoidapproveSelection(){感谢阅读Filefile=newFile(getSelectedFile().getPath());谢谢阅读if(file.exists())super.approveSelection();elseJOptionPane.showMessageDialog(null,"你选择的文件不存在,请重新选择!");谢谢阅读}!-把上面这段代码添加进刚才的类里面,然后把JFileChooserfile=newJFileChooser(".");改成精品文档放心下载JFileChooserfile=newMyChooser(".");精品文档放心下载好了,现在我们就可以在不关闭该对话框的情况下判断用户的输入是否错误了。还可以加入感谢阅读正则表达式,判断用户输入是否符合规定,操作方式按照这个框架来写就没问题了。这里不谢谢阅读再赘述。下面是保存对话框!保存对话框:其实保存对话框和打开文件对话框在使用上没什么区别,他们都是使用同一个类JFileChooser,因为在swing当中打开和保存对话框不会做出任何对文件进行处理的功能,所有的这些功能需要我们自己去实现,而仅仅是提供了1个这样的窗口模型而已。因此这两种窗口其实只是将按钮的标签进行了替换而已。创建他们唯一的区别就是打开是调用showOpenDialog()方法,保存则是调用showSaveDialog(),创建形式几乎一样。我们在使感谢阅读用他们的时候就需要分别对这两种窗口的返回后进行不同的处理,设置过滤器是一样的,因此过滤器我们就复用上面打开文件窗口的方法,但是在判断输入保存文件是否在当前目录下时,我们需要做出不一样的处理。当用户输入了与当前目录相同的文件名后,要弹出对话框询问用户是否需要覆盖原文件,如果用户选择否,那么返回保存文件的对话框允许用户继续选择或者输入保存的文件名。谢谢阅读下面我只需要修改上面代码的两个地方就能够达到目的。首先将修改一下MyChooser这个感谢阅读类privatestaticclassMyChooserextendsJFileChooser{谢谢阅读MyChooser(Stringpath){super(path);}/*同样是覆盖approveSelection方法,首先获得输入文件的路径,然后判断其是否在当前目录下,如果存在,那么弹出对话框询问是否需要覆盖当前文件,如果选择取消,则回到保存对话框
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安徽省毫州市第二中学2026届高三预测密卷:化学试题试卷解析含解析
- 2026年2026年高考英语三轮冲刺:完形填空四大结构 真题练习题(含答案解析)新版
- 高端数字印刷项目施工方案
- 雕塑安装工程施工组织方案
- 储能电站设备运输方案
- 光储充数据采集方案
- 城区供水主管网更新改造施工安全方案
- LNG加气站管道清管作业方案
- 新建自来水厂土建基础施工方案
- 污水处理厂初沉池设计方案
- (零诊)成都市2023级(2026届)高中毕业班摸底测试英语试卷(含答案)
- 2025年中海油招聘笔试参考题库附带答案详解
- 2025年全国新高考I卷高考全国一卷真题英语试卷(真题+答案)
- 实验室认证质量管理制度
- 合同转包协议书范本
- 零基预算研究分析
- 客舱危情沟通总体方案武文燕课件
- 超星尔雅学习通《网络创业理论与实践(中国电子商务协会)》2025章节测试附答案
- 脑出血的护理讲课
- 四年级下册《劳动》全册教案教学设计
- 2025年国务院发展研究中心信息中心招聘应届毕业生1人管理单位笔试遴选500模拟题附带答案详解
评论
0/150
提交评论