本文实例讲述了Java Swing组件JFileChooser用法。分享给大家供大家参考,具体如下:
JFileChooser文件选择器是Swing中经常用到的一个控件。它的使用主要包含以下几个参数:
1.当前路径。也就是它第一次打开时所在的路径,许多软件喜欢设置为桌面。
2.文件过滤器。通过设置文件过滤器,只有特定类型的文件是可见的,比如文本,音频,等。
3.选择模式。包含三种情况:仅文件, 仅目录, 文件或目录。
4.是否允许多选。
JFileChooser的参数当然不止以上4种,它还有很多高级选项,比如你可以对文件的显示图标进行定制等,由于不经常用,这里不再介绍。
有2个地方要注意:
1.文件过滤器建议使用FileNameExtensionFilter,它是FileFilter的子类,以非常方便的方法实现了过滤器。用法见代码。
2.getSelectedFiles()方法,它只在isMultiSelectionEnable()方法返回true是有效。也就是说,如果你不允许多选,则只能使用getSelectedFile()方法,否则只能得到一个空的文件列表。
下面通过一个demo来展示它的基本用法。
package awtDemo;
import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.filechooser.FileSystemView;
/**
*
* @author pzy
*/
@SuppressWarnings("serial")
public class JFileChooserFrame extends javax.swing.JFrame {
/**
* Creates new form JFileChooserFrame
*/
public JFileChooserFrame() {
initComponents();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
//
private void initComponents() {
fileFilterisBG = new javax.swing.ButtonGroup();
isMultiSelectBG = new javax.swing.ButtonGroup();
jPanel1 = new javax.swing.JPanel();
text_rb = new javax.swing.JRadioButton();
video_rb = new javax.swing.JRadioButton();
audio_rb = new javax.swing.JRadioButton();
all_rb = new javax.swing.JRadioButton();
jPanel2 = new javax.swing.JPanel();
jComboBox1 = new javax.swing.JComboBox();
multiSelect_rb = new javax.swing.JRadioButton();
singleSelect_rb = new javax.swing.JRadioButton();
jPanel3 = new javax.swing.JPanel();
jButton1 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setLocationByPlatform(true);
jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("文件类型"));
fileFilterisBG.add(text_rb);
text_rb.setText("文本");
fileFilterisBG.add(video_rb);
video_rb.setText("视频");
fileFilterisBG.add(audio_rb);
audio_rb.setText("音频");
fileFilterisBG.add(all_rb);
all_rb.setSelected(true);
all_rb.setText("所有");
javax.swing.GroupLayout jPa