我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何在Java中使用JFileChooser组件

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何在Java中使用JFileChooser组件

这篇文章将为大家详细讲解有关如何在Java中使用JFileChooser组件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

JFileChooser文件选择器是Swing中经常用到的一个控件。它的使用主要包含以下几个参数:

当前路径。也就是它第一次打开时所在的路径,许多软件喜欢设置为桌面。

文件过滤器。通过设置文件过滤器,只有特定类型的文件是可见的,比如文本,音频,等。

选择模式。包含三种情况:仅文件, 仅目录, 文件或目录。

是否允许多选。

JFileChooser的参数当然不止以上4种,它还有很多高级选项,比如你可以对文件的显示图标进行定制等,由于不经常用,这里不再介绍。

有2个地方要注意:

文件过滤器建议使用FileNameExtensionFilter,它是FileFilter的子类,以非常方便的方法实现了过滤器。用法见代码。

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;@SuppressWarnings("serial")public class JFileChooserFrame extends javax.swing.JFrame {    public JFileChooserFrame() {    initComponents();  }    @SuppressWarnings({ "unchecked", "rawtypes" })  // <editor-fold defaultstate="collapsed" desc="Generated Code">  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 jPanel1Layout = new javax.swing.GroupLayout(jPanel1);    jPanel1.setLayout(jPanel1Layout);    jPanel1Layout.setHorizontalGroup(      jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)        .addComponent(text_rb)        .addGap(29, 29, 29)        .addComponent(video_rb)        .addGap(35, 35, 35)        .addComponent(audio_rb)        .addGap(39, 39, 39)        .addComponent(all_rb)        .addGap(32, 32, 32))    );    jPanel1Layout.setVerticalGroup(      jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)      .addGroup(jPanel1Layout.createSequentialGroup()        .addContainerGap()        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)          .addComponent(video_rb)          .addComponent(text_rb)          .addComponent(audio_rb)          .addComponent(all_rb))        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))    );    jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("选择模式"));    jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "仅文件", "仅目录", "文件或目录" }));    jComboBox1.addActionListener(new java.awt.event.ActionListener() {      public void actionPerformed(java.awt.event.ActionEvent evt) {        jComboBox1ActionPerformed(evt);      }    });    isMultiSelectBG.add(multiSelect_rb);    multiSelect_rb.setText("可多选");    isMultiSelectBG.add(singleSelect_rb);    singleSelect_rb.setSelected(true);    singleSelect_rb.setText("不可多选");    javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);    jPanel2.setLayout(jPanel2Layout);    jPanel2Layout.setHorizontalGroup(      jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)      .addGroup(jPanel2Layout.createSequentialGroup()        .addContainerGap()        .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, 144, javax.swing.GroupLayout.PREFERRED_SIZE)        .addGap(18, 18, 18)        .addComponent(multiSelect_rb, javax.swing.GroupLayout.PREFERRED_SIZE, 82, javax.swing.GroupLayout.PREFERRED_SIZE)        .addGap(18, 18, 18)        .addComponent(singleSelect_rb, javax.swing.GroupLayout.PREFERRED_SIZE, 82, javax.swing.GroupLayout.PREFERRED_SIZE)        .addContainerGap(14, Short.MAX_VALUE))    );    jPanel2Layout.setVerticalGroup(      jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)      .addGroup(jPanel2Layout.createSequentialGroup()        .addContainerGap()        .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)          .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)          .addComponent(multiSelect_rb)          .addComponent(singleSelect_rb))        .addContainerGap(16, Short.MAX_VALUE))    );    jButton1.setText("开始");    jButton1.addActionListener(new java.awt.event.ActionListener() {      public void actionPerformed(java.awt.event.ActionEvent evt) {        jButton1ActionPerformed(evt);      }    });    javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);    jPanel3.setLayout(jPanel3Layout);    jPanel3Layout.setHorizontalGroup(      jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)      .addGroup(jPanel3Layout.createSequentialGroup()        .addGap(117, 117, 117)        .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 139, javax.swing.GroupLayout.PREFERRED_SIZE)        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))    );    jPanel3Layout.setVerticalGroup(      jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)      .addGroup(jPanel3Layout.createSequentialGroup()        .addGap(26, 26, 26)        .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 32, javax.swing.GroupLayout.PREFERRED_SIZE)        .addContainerGap(19, Short.MAX_VALUE))    );    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());    getContentPane().setLayout(layout);    layout.setHorizontalGroup(      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)      .addGroup(layout.createSequentialGroup()        .addContainerGap()        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)          .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)          .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)          .addGroup(layout.createSequentialGroup()            .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)            .addGap(84, 84, 84)))        .addContainerGap())    );    layout.setVerticalGroup(      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)      .addGroup(layout.createSequentialGroup()        .addGap(8, 8, 8)        .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)        .addGap(18, 18, 18)        .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)        .addGap(18, 18, 18)        .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))    );    pack();  }// </editor-fold>  private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {    // TODO add your handling code here:    String itemString = jComboBox1.getSelectedItem().toString();    if ("仅文件".equals(itemString)) {      fileSelectionMode = JFileChooser.FILES_ONLY;    } else if ("仅目录".equals(itemString)) {      fileSelectionMode = JFileChooser.DIRECTORIES_ONLY;    } else if ("文件或目录".equals(itemString)) {      fileSelectionMode = JFileChooser.FILES_AND_DIRECTORIES;    }  }  private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {    // TODO add your handling code here:    fileChooser = new JFileChooser();    //初始化当前路径    FileSystemView fsv = FileSystemView.getFileSystemView();    File homeFile =fsv.getHomeDirectory();  //这便是读取桌面路径的方法了    fileChooser.setCurrentDirectory(homeFile);    //初始化文件过滤器    if (text_rb.isSelected()) {      filter = new FileNameExtensionFilter("文本文件", "log", "txt");      fileChooser.setFileFilter(filter);    }    if (video_rb.isSelected()) {      filter = new FileNameExtensionFilter("视频文件", "mp4", "mkv");      fileChooser.setFileFilter(filter);    }    if (audio_rb.isSelected()) {      filter = new FileNameExtensionFilter("音频文件", "mp3", "wma");      fileChooser.setFileFilter(filter);    }    //初始化选择模式    fileChooser.setFileSelectionMode(fileSelectionMode);    //是否允许多选    if (multiSelect_rb.isSelected()) {      fileChooser.setMultiSelectionEnabled(true);    }    else if(singleSelect_rb.isSelected()) {      fileChooser.setMultiSelectionEnabled(false);    }    //打开文件选择器    int i = fileChooser.showDialog(this, "选择");    if(i == JFileChooser.APPROVE_OPTION){      StringBuilder sb;      if(fileChooser.isMultiSelectionEnabled()){      sb = new StringBuilder("您选择了以下文件:");      File [] files = fileChooser.getSelectedFiles();      for (File file : files) {        sb.append("\n");        sb.append(file.getName());      }      }      else{        File file = fileChooser.getSelectedFile();        sb = new StringBuilder("您选择的文件是:");         sb.append("\n");        sb.append(file.getName());      }      JOptionPane.showMessageDialog(this, sb);    }  }    public static void main(String args[]) {        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">        try {      for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {        if ("Nimbus".equals(info.getName())) {          javax.swing.UIManager.setLookAndFeel(info.getClassName());          break;        }      }    } catch (ClassNotFoundException ex) {      java.util.logging.Logger.getLogger(JFileChooserFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);    } catch (InstantiationException ex) {      java.util.logging.Logger.getLogger(JFileChooserFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);    } catch (IllegalAccessException ex) {      java.util.logging.Logger.getLogger(JFileChooserFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);    } catch (javax.swing.UnsupportedLookAndFeelException ex) {      java.util.logging.Logger.getLogger(JFileChooserFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);    }    //</editor-fold>        java.awt.EventQueue.invokeLater(new Runnable() {      public void run() {        new JFileChooserFrame().setVisible(true);      }    });  }  private JFileChooser fileChooser;  private FileNameExtensionFilter filter;  private int fileSelectionMode = JFileChooser.FILES_ONLY;  // Variables declaration - do not modify  private javax.swing.JRadioButton all_rb;  private javax.swing.JRadioButton audio_rb;  private javax.swing.ButtonGroup fileFilterisBG;  private javax.swing.ButtonGroup isMultiSelectBG;  private javax.swing.JButton jButton1;  @SuppressWarnings("rawtypes") private javax.swing.JComboBox jComboBox1;  private javax.swing.JPanel jPanel1;  private javax.swing.JPanel jPanel2;  private javax.swing.JPanel jPanel3;  private javax.swing.JRadioButton multiSelect_rb;  private javax.swing.JRadioButton singleSelect_rb;  private javax.swing.JRadioButton text_rb;  private javax.swing.JRadioButton video_rb;  // End of variables declaration}

运行效果如下:

如何在Java中使用JFileChooser组件

如何在Java中使用JFileChooser组件

如何在Java中使用JFileChooser组件

关于如何在Java中使用JFileChooser组件就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何在Java中使用JFileChooser组件

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何在Java中使用JFileChooser组件

这篇文章将为大家详细讲解有关如何在Java中使用JFileChooser组件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。JFileChooser文件选择器是Swing中经常用到的一个控件。
2023-05-30

Java中如何使用SpringCloudAlibaba Sentinel组件

Java中如何使用SpringCloudAlibaba Sentinel组件,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Sentinel 是什么随着微服务的流行,服务和服
2023-06-20

如何在vue中使用backtop组件

如何在vue中使用backtop组件?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。代码: