2012-04-10 86 views
25

我是Java的新手。我试图动态选择文件位置来保存我的项目的结果(将在我的项目开始时启动)。我使用了几个FileDialog示例,但其中每一个都允许我选择文件而不是文件夹。在Java中选择文件夹目标?

任何人都可以请帮助我的例子(或)链接到一个相同?

+1

好的,这是一个好的开始。听起来像你做了一些研究。你能否列举你尝试过的一些例子?这将帮助其他人处理你已经知道的事情。 – jmort253 2012-04-10 05:26:31

+0

当然会..给我一点时间 – Sam 2012-04-10 05:36:28

回答

49

你可以尝试这样的事情(如下所示:Select a Directory with a JFileChooser):

import javax.swing.*; 
import java.awt.event.*; 
import java.awt.*; 
import java.util.*; 


public class DemoJFileChooser extends JPanel 
    implements ActionListener { 
    JButton go; 

    JFileChooser chooser; 
    String choosertitle; 

    public DemoJFileChooser() { 
    go = new JButton("Do it"); 
    go.addActionListener(this); 
    add(go); 
    } 

    public void actionPerformed(ActionEvent e) {    
    chooser = new JFileChooser(); 
    chooser.setCurrentDirectory(new java.io.File(".")); 
    chooser.setDialogTitle(choosertitle); 
    chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 
    // 
    // disable the "All files" option. 
    // 
    chooser.setAcceptAllFileFilterUsed(false); 
    //  
    if (chooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) { 
     System.out.println("getCurrentDirectory(): " 
     + chooser.getCurrentDirectory()); 
     System.out.println("getSelectedFile() : " 
     + chooser.getSelectedFile()); 
     } 
    else { 
     System.out.println("No Selection "); 
     } 
    } 

    public Dimension getPreferredSize(){ 
    return new Dimension(200, 200); 
    } 

    public static void main(String s[]) { 
    JFrame frame = new JFrame(""); 
    DemoJFileChooser panel = new DemoJFileChooser(); 
    frame.addWindowListener(
     new WindowAdapter() { 
     public void windowClosing(WindowEvent e) { 
      System.exit(0); 
      } 
     } 
    ); 
    frame.getContentPane().add(panel,"Center"); 
    frame.setSize(panel.getPreferredSize()); 
    frame.setVisible(true); 
    } 
} 
+0

非常感谢球员...是否正是我需要的..想做的事与对ü点“这个答案有用”的东西。但显然我需要15点声望:( – Sam 2012-04-10 05:35:17

+0

@山姆:通常情况下,答案分值下滴答绿色“非常好”标志的伎俩 – npinti 2012-04-10 08:09:41

+0

什么是用于 – user2084795 2015-04-26 18:54:13

9

尝试这样的事情

JFileChooser chooser = new JFileChooser(); 
chooser.setCurrentDirectory(new java.io.File(".")); 
chooser.setDialogTitle("select folder"); 
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 
chooser.setAcceptAllFileFilterUsed(false); 
+0

非常感谢..让我开始在这个方向上试验 – Sam 2012-04-10 05:33:30

+0

“chooser.setCurrentDirectory(new java.io.File(”。“));”线。我真的不明白 – cssGEEK 2015-08-06 18:12:10

+2

@cssGEEK可能来不及回答,但它使对话框从当前目录开始。在Unix(至少)中,每个目录都有一个名为'.'的文件夹和一个名为'..'的文件夹。第一个是对同一目录的引用,后者是父目录。在Java中,如果不是以'/'(Unix)或'X:\'(Windows)开头,那么给File的构造函数的字符串是一个相对路径,所以如果你给它“。”它是一个相对于程序当前目录的文件夹。这将使选择器指向程序正在运行的当前目录。 – 2016-07-24 08:13:24

20

甲骨文的Java教程对于文件选择:http://docs.oracle.com/javase/tutorial/uiswing/components/filechooser.html

getSelectedFile()返回所选文件夹,尽管名称。 getCurrentDirectory()返回所选文件夹的目录。

import javax.swing.*; 

public class Example 
{ 
    public static void main(String[] args) 
    { 
     JFileChooser f = new JFileChooser(); 
     f.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 
     f.showSaveDialog(null); 

     System.out.println(f.getCurrentDirectory()); 
     System.out.println(f.getSelectedFile()); 
    }  
} 
0

我发现你在this link需要的一个很好的例子。

import javax.swing.JFileChooser; 

public class Main { 
    public static void main(String s[]) { 
    JFileChooser chooser = new JFileChooser(); 
    chooser.setCurrentDirectory(new java.io.File(".")); 
    chooser.setDialogTitle("choosertitle"); 
    chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 
    chooser.setAcceptAllFileFilterUsed(false); 

    if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) { 
     System.out.println("getCurrentDirectory(): " + chooser.getCurrentDirectory()); 
     System.out.println("getSelectedFile() : " + chooser.getSelectedFile()); 
    } else { 
     System.out.println("No Selection "); 
    } 
    } 
}