iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何在Java中使用JFileChooser组件
  • 535
分享到

如何在Java中使用JFileChooser组件

javajfilechooser 2023-05-30 22:05:39 535人浏览 薄情痞子
摘要

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

这篇文章将为大家详细讲解有关如何在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组件就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: 如何在Java中使用JFileChooser组件

本文链接: https://www.lsjlt.com/news/221576.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • 如何在Java中使用JFileChooser组件
    这篇文章将为大家详细讲解有关如何在Java中使用JFileChooser组件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。JFileChooser文件选择器是Swing中经常用到的一个控件。...
    99+
    2023-05-30
    java jfilechooser
  • 如何在Django中使用Java数组?
    Django是一个流行的Python Web框架,它提供了许多强大的功能,使开发Web应用程序变得更加容易。在许多Web应用程序中,Java数组也是非常常见的数据类型。在本文中,我们将探讨如何在Django中使用Java数组。 1.在Dja...
    99+
    2023-10-03
    数组 linux django
  • 如何在JavaScript中使用Java数组?
    当我们在进行JavaScript开发时,有时候需要使用Java数组,这时我们该怎么办呢?在本文中,我们将会介绍如何在JavaScript中使用Java数组。 Java数组是Java中最基本的数据结构之一,它可以存储一组相同类型的数据。在Ja...
    99+
    2023-10-25
    数组 javascript 函数
  • Java中如何使用SpringCloudAlibaba Sentinel组件
    Java中如何使用SpringCloudAlibaba Sentinel组件,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Sentinel 是什么随着微服务的流行,服务和服...
    99+
    2023-06-20
  • 如何在Android中使用PopupMenu组件
    本篇文章给大家分享的是有关如何在Android中使用PopupMenu组件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1.创建资源文件在 res 目录下新建 menu 文件夹...
    99+
    2023-05-31
    android popupmenu
  • 如何在vue中使用backtop组件
    如何在vue中使用backtop组件?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。代码:<template> <div class=&qu...
    99+
    2023-06-14
  • Java中如何使用原子组件和同步组件
    Java中如何使用原子组件和同步组件,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。原子组件的实现原理CAScas的底层实现可以看下之前写的一篇文章:详解锁原理,synchr...
    99+
    2023-06-15
  • JRadioButton组件怎么在Java中使用
    今天就跟大家聊聊有关JRadioButton组件怎么在Java中使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。JRadioButton是Swing中的单选框。所谓单选框是指,在同...
    99+
    2023-05-30
    java jradiobutton
  • 怎么在Java中使用JCheckBox组件
    这篇文章将为大家详细讲解有关怎么在Java中使用JCheckBox组件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。JCheckBox是Swing中的复选框。所谓复选框就是指,可以同时存在多...
    99+
    2023-05-30
    java jcheckbox
  • 怎么在Java中使用BoxLayout组件
    怎么在Java中使用BoxLayout组件?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。BoxLayout 可以把控件依次进行水平或者垂直排列布局,这是通过参数 X_AXI...
    99+
    2023-05-30
    java boxlayout
  • 如何在Java中使用二维数组
    本篇文章为大家展示了如何在Java中使用二维数组,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。常用的java框架有哪些1.SpringMVC,Spring Web MVC是一种基于Java的实现了W...
    99+
    2023-06-15
  • vue activated在子组件中如何使用
    本篇内容介绍了“vue activated在子组件中如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!页面:base:<templ...
    99+
    2023-06-25
  • 如何在JavaScript响应中使用Java数组?
    在现代Web应用程序中,JavaScript和Java是最常用的编程语言之一。虽然两者的语法和语义有很大的不同,但是它们都有一个共同点:数组。在本文中,我们将探讨如何在JavaScript响应中使用Java数组。 首先,让我们来了解一下什么...
    99+
    2023-08-19
    数组 javascript 响应
  • Commons lang组件如何在Java项目中运用
    今天就跟大家聊聊有关Commons lang组件如何在Java项目中运用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。     &n...
    99+
    2023-05-31
    java commons lang ava
  • 如何在Java中使用Shell脚本操作数组和文件?
    Java是一种非常流行的编程语言,常用于开发Web应用程序和移动应用程序。在Java中,我们可以使用Shell脚本来操作数组和文件,这使得开发者可以更加轻松地管理数据和文件。本文将介绍如何在Java中使用Shell脚本操作数组和文件。 一、...
    99+
    2023-10-31
    shell 数组 文件
  • 如何在vue中使用ant-design-vue组件
    目录在vue中使用ant-design-vue组件1. 安装2. 引入组件库3. 使用3.1 按钮样式3.2 导航栏样式3.3 表单样式在vue中使用ant-design-vue组件...
    99+
    2023-01-29
    vue使用ant-design-vue组件 ant-design-vue组件
  • content provider组件如何在Android应用中使用
    本篇文章给大家分享的是有关content provider组件如何在Android应用中使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、基本概念Android四大组件之一...
    99+
    2023-05-31
    android content provider
  • 如何在在Vue3中使用markdown 编辑器组件
    目录安装引入组件基础用法保存后的 markdown 或者 html 文本如何渲染在页面上?安装 # 使用 npm npm i @kangc/v-md-editor@next -S...
    99+
    2024-04-02
  • 怎么在Java中使用JTree树状组件
    怎么在Java中使用JTree树状组件?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、简单样式TreeNodeDemo.javapackage awtDemo;im...
    99+
    2023-05-30
    java jtree
  • bootstrap组件中如何使用导航组件
    这篇文章主要介绍了bootstrap组件中如何使用导航组件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Bootstrap 中的导航组件都依...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作