【问题标题】:Need help using JFileChooser to import entire folder into JList in NetBeans需要帮助使用 JFileChooser 将整个文件夹导入 NetBeans 中的 JList
【发布时间】:2013-06-21 21:02:59
【问题描述】:

我正在创建一个小程序。在编程方面,我有点菜鸟,我刚开始使用 NetBeans GUI 构建器来帮助朋友编写代码。到目前为止发生的事情是:

  1. JFrame 弹出一个不可编辑的文本字段、按钮、JList 和空面板。
  2. 用户点击按钮,它会提示他们选择一个目录。
  3. 一旦用户选择了目录,程序就会从这个文件夹中加载所有文件(最后我将它设置为只允许.jpg)。
  4. 然后程序将在文本字段中显示目录并将这些文件的名称放在 JList 中。

    问题: 我在使用 4 时遇到了问题。我一直在努力让这个东西运行起来。我已经让它正确显示目录。但我似乎无法让 JList 从文件数组中加载文件名。如果有人可以提供帮助,这里有一些代码。 注意:我已经在此按钮操作事件之外声明了一个名为 listModel 的 DefaulListModel。代码没有产生任何错误,但在我单击加载后 JList 仍然为空。 文本字段 -> 目录 按钮-> jButton1 文件选择器-> fc 文件名的字符串数组 -> 文件名 文件数组 -> selectedFiles JList -> 文件列表

    提前致谢! :)

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    JFileChooser fc = new JFileChooser(); 
    fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
    fc.showOpenDialog(null);
    File[] selectedFiles = fc.getSelectedFiles();
    directory.setText(fc.getSelectedFile().getAbsolutePath()); //this displays the path of the selected folder in the text field
    
    selectedFiles = fc.getSelectedFiles();        
    //this loop puts the files in the fileList... at least it should
    for(int i = 0; i < selectedFiles.length; i++){
        listModel.addElement(selectedFiles[i]);
                }
    
    
    }
    

【问题讨论】:

    标签: java swing awt jlist jfilechooser


    【解决方案1】:

    您的JFileChooser 设置为仅允许选择目录。我假设

    selectedFiles = fc.getSelectedFiles();
    

    返回一个空数组,这可以解释为什么您在列表中看不到任何内容。

    你可能想用

    替换它
    File directory = fc.getSelectedFile();
    if ( directory != null && directory.isDirectory() ){
      File[] subFiles = directory.listFiles();
      for ( int i = 0; i < subFiles.length; i++ ){
        listModel.addElement( subFiles[i] );
      }
    }
    

    【讨论】:

    • 哇,谢谢!我永远不会自己解决这个问题。所以如果我没记错的话,问题是我试图加载一个文件,但文件夹是唯一选择的东西,导致它返回 null?
    • 当您的文件选择器根据 javadoc 处于单选模式时,它会返回一个空数组。但只需使用调试器并检查返回值
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-03
    • 1970-01-01
    • 2021-01-22
    • 2017-02-09
    • 1970-01-01
    相关资源
    最近更新 更多