2011-12-03 39 views
1

我相信这些都是非常nooby的问题......但我从来没有处理过FileDialog之前,我似乎无法让我的代码工作。Java - 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”。

非常感谢,如果你能帮助我(在那里显然是一个“最佳答案”雅:))算出这个

+6

看看JFileChooser - 它会让你的生活更轻松。你会发现这里的教程(http://docs.oracle.com/javase/tutorial/uiswing/components/filechooser.html)。 – Paul

回答

0

您应该使用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(); 
} 
+0

哇。这看起来好多了。谢谢(上次我对文件做了任何事情就像2年前一样......我从来没有听说过JFileChooser) 它的工作原理。但数字不变。我需要以某种方式更新JLabel吗? – Brandon

+2

-1,Paul给出了Swing教程的链接,该教程展示了在发布之前20分钟如何使用JFileChooser。因此,在评论中回答了这个问题,并且不需要重复的答案。由于它a)回答问题b)使得海报可以访问另一个可能对未来有帮助的参考,因此首选该教程的链接是首选。 – camickr

+0

*“上次我使用Files做了任何事情就像2年前一样......当时我从来没听说过JFileChooser”*您需要从您曾经居住过的任何摇滚下面爬过。 “JFileChooser”自成立以来一直是Swing的一部分。 Swing在1998年发布的[Java 1.2](http://en.wikipedia.org/wiki/Java_1.2#J2SE_1.2_.28December_8.2C_1998.29)中引入了J2SE!如果你在2009年使用的是文件,那么只有11年的时间才能让Swing的奇迹过滤掉(不会)。 –