【问题标题】:Selecting Folder Destination in Java?在Java中选择文件夹目标?
【发布时间】:2012-04-22 10:19:48
【问题描述】:

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

谁能帮我提供一个相同的示例(或)链接?

【问题讨论】:

  • 好的,这是一个好的开始。听起来你已经做了一些研究。你能举一些你尝试过的例子吗?这将帮助其他人使用您已经知道的知识。

标签: java directory


【解决方案1】:

试试这样的

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

【讨论】:

  • 非常感谢.. 让我开始朝这个方向尝试
  • "chooser.setCurrentDirectory(new java.io.File("."));" 的意义何在?线。我真的不明白
  • @cssGEEK 回答可能为时已晚,但它使对话框从当前目录开始。在 Unix 中(至少),每个目录都有一个名为 . 的文件夹和一个名为 .. 的文件夹。第一个是对同一目录的引用,后者是父目录。在Java中,你给File的构造函数的字符串是一个相对路径,如果它不以/(Unix)或`X:`(Windows)开头,所以如果你给它“。”,它是相对于程序当前目录所在的文件夹。这将使选择器指向程序正在运行的当前目录。
【解决方案2】:

您可以尝试这样的事情(如下所示: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);
    }
}

【讨论】:

  • 非常感谢伙计们......正是我需要的......想要为你做一些“这个答案的有用性”点......但显然我需要15个声誉点:(跨度>
  • @Sam:通常在答案分数下打上绿色的“非常好”标记就可以了。
  • int result 是干什么用的?
  • chooser.showOpenDialog(this) 根据枚举返回一个整数,表示用户的响应。 int result 的预期目的似乎是保留这个数字。我会删除它以避免混淆。
  • 请记住,从对话框返回后,getSelectedDirectory() 方法返回所选目录所在的目录。 getSelectedFile() 返回实际选择的目录\
【解决方案3】:

Oracles 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());
    }      
}

【讨论】:

  • 为描述 getCurrentDirectory getSelectedFile 之间的差异点赞。
【解决方案4】:

可以与 JFileChooser 一起使用:

UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");

拥有像 Windows 一样的外观。

有关其他设置,请在此处查看: https://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html#available

【讨论】:

    【解决方案5】:

    我在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 ");
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2012-06-05
      • 1970-01-01
      • 1970-01-01
      • 2013-03-06
      • 1970-01-01
      • 2021-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多