【问题标题】:Java - FileDialog Questions/AssistanceJava - FileDialog 问题/帮助
【发布时间】:2012-01-12 09:01:24
【问题描述】:

我确信这些都是非常愚蠢的问题......但我以前从未处理过 FileDialog,而且我似乎无法让我的编码工作。

这是我的 JButton 的监听器,我知道它会进入,因为会弹出一个 FileDialog:

public static class FileListener implements ActionListener{
    public void actionPerformed(ActionEvent e) {
        FileDialog fd = new FileDialog(new Frame(), "Pick Folder");
        String dir = "C:/";
        fd.setDirectory(dir);
        fd.setAlwaysOnTop(true);
        fd.setMode(FileDialog.LOAD);
        fd.setVisible(true);
        String pickedFileDir = fd.getFile();
        File folder = new File(pickedFileDir);
        File[] listOfFiles = folder.listFiles();
        numOfFiles = listOfFiles.length;
    }
}

问题是我希望它能够加载文件夹。我需要从中获取目录。即使我确实单击了 1 个文件并按“打开”,numOfFiles 也不会改变。因为这段代码,我知道这一点:

JLabel number = new JLabel("Files found: " + numOfFiles);

标签在打开文件后不会改变。它应该从“0”变为“1”。

如果您能帮我解决这个问题,我们将不胜感激(显然是对您而言的“最佳答案” :))

【问题讨论】:

  • 看看 JFileChooser - 它会让您的生活更轻松。你会发现教程here

标签: java swing load awt directory


【解决方案1】:

您应该改用 JFileChooser。这是您的示例:

JFileChooser jfc = new JFileChooser();
jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
jfc.setCurrentDirectory(new File("C:/"));
if (jfc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
    File selectedFile = jfc.getSelectedFile();
    File[] listOfFiles = selectedFile.listFiles();
}

【讨论】:

  • 哇。这看起来容易多了。谢谢(上次我对 Files 做任何事情就像 2 年前一样......那时我什至从未听说过 JFileChooser)它有效。但是数字没有改变。我是否必须以某种方式更新 JLabel?
  • -1,Paul 在发布前 20 分钟提供了一个指向 Swing 教程的链接,该教程展示了如何使用 JFileChooser。因此,这个问题在评论中得到了回答,不需要重复的答案。首选教程链接,因为它 a) 回答了问题 b) 使发布者可以访问另一个参考资料,这在未来可能会有所帮助。
  • “上一次我对 Files 做任何事情就像 2 年前一样……我那时还从来没有听说过 JFileChooser” 你需要从任何岩石下面爬出来一直在生活。 JFileChooser 自 Swing 成立以来一直是其一部分。 Swing 在 1998 年发布的 Java 1.2 中被引入 J2SE!如果您在 2009 年处理文件,那么“只剩下”11 年的时间让 Swing 的奇迹(未能)过滤给您。
  • 哇。我一定是生活在一块岩石下。顺便说一句,我从未广泛使用过文件。
猜你喜欢
  • 2014-06-04
  • 1970-01-01
  • 2011-02-11
  • 1970-01-01
  • 2011-02-02
  • 2011-01-17
  • 2011-03-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多