1.基本应用:
可以利用JFileChooser控件选择文件,JFileChooser构造函数可以传入当前路径可以是File类型或者字符串形式的路径,.表示当前路径。如果不传入参数,显示的路径是我的文档(window系统测试)。
创建完JFileChooser控件,调用showOpenDialog方法,选择文件后选择点击打开按钮后,showOpenDialog的返回值为JFileChooser.APPROVE_OPTION(int型),可以作为判断是否点击了打开按钮。
可以通过setMultiSelectionEnabled方法设置是否可以多选,通过setFileSelectionMode(int mode)设置可以选择文件,路径或文件和路径,值分别为:JFileChooser.FILES_ONLY
JFileChooser.DIRECTORIES_ONLY
JFileChooser.FILES_AND_DIRECTORIES
。
点击打开按钮后,可以利用getSelectedFile()返回一个文件,getSelectedFiles()返回文件数组(可以多选的情况下).但是也需要判断返回值是否为null,因为可以不选择文件或路径,而直接点击打开按钮返回。
实现一个打开jpg图片文件,然后显示的程序,代码如下:
public class FileChooserTest extends JFrame
{
JLabel label;
public FileChooserTest()
{
JPanel panel = new JPanel();
label = new JLabel();
JButton jbn = new JButton("打开文件");
panel.add(jbn);
jbn.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
JFileChooser jfc = new JFileChooser();
jfc.setMultiSelectionEnabled(false);
jfc.setFileSelectionMode(JFileChooser.FILES_ONLY);
int res = jfc.showOpenDialog(FileChooserTest.this);
if(res == JFileChooser.APPROVE_OPTION)
{
File file = jfc.getSelectedFile();
if(file!=null&&file.getName().endsWith(".jpg"))
label.setIcon(new ImageIcon(file.getAbsolutePath()));
}
}
});
add(label);
add(panel,BorderLayout.SOUTH);
try
{
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch (Exception e)
{
}
init();
}
public void init()
{
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(600, 500);
this.setLocationRelativeTo(null);
this.setTitle("树控件");
this.setVisible(true);
}
}
2.文件过滤器
可以为JFileChooser添加文件过滤器,可以添加多个,但在给定的时刻,只能激活一个。FileFilter抽象类有两个方法,boolean accept(File f)表示是否接收该文件,String getDescription()返回的字符串显示在JFileChooser的组合框中。定义了一个txt过滤器和一个图片过滤器,代码如下:
class TextFileFilter extends FileFilter
{
@Override
public boolean accept(File f)
{
// TODO Auto-generated method stub
if(f.isDirectory()) return true;
String name = f.getName();
if(name.endsWith(".txt"))
return true;
return false;
}
@Override
public String getDescription()
{
// TODO Auto-generated method stub
return "文本文件(*.txt)";
}
}
class PicFileFilter extends FileFilter
{
@Override
public boolean accept(File f)
{
// TODO Auto-generated method stub
if(f.isDirectory()) return true;
String name = f.getName();
if(name.endsWith(".jpg")||name.endsWith(".png")
||name.endsWith(".gif"))
return true;
return false;
}
@Override
public String getDescription()
{
// TODO Auto-generated method stub
return "图片文件(*.jpg,*.png,*.gif)";
}
}
由于水平有限,如果有错误,请大家多多指导,提高水平,共同学习。