JFileChooser针对路径错误返回CANCEL_OPTION

时间:2018-07-12 14:28:31

标签: java swing filepath jfilechooser

我想使用JFileChooser选择目录(正在运行):

JFileChooser chooser = new JFileChooser();
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
int retrival = chooser.showSaveDialog(null);
if (retrival == JFileChooser.APPROVE_OPTION) {
    //do smth
} else {
    //print error message
}

如果我选择一个文件夹,并向路径文本字段(如here)添加“ \ exisitingFile.txt”之类的内容,它将打印一条错误消息,因为文件“ exisitingFile.txt”不是目录。但是,如果我这样做并单击保存按钮,则“检索”的值为1(将为JFileChooser.CANCEL_OPTION)。但是如果用户取消,我不希望错误消息弹出。如果用户正在输入已经存在的文件(而不是目录)的路径,我只希望它显示。

我想知道为什么“检索”不保存JFileChooser.ERROR_OPTION的值(该值为-1),因为这显然是错误,而不是用户启动的取消操作。

谢谢,jogo

1 个答案:

答案 0 :(得分:0)

我不知道为什么会这样处理。 我看到您可以自己验证的选项。

但是我建议您使用JavaFx的DirecotryChooser。

public class Main extends Application {  
  public static void main(String[] args) {
    launch(args);
  }

  @Override
  public void start(Stage primaryStage) throws Exception {
    DirectoryChooser directoryChooser = new DirectoryChooser();
    File file = directoryChooser.showDialog(null);
  }
}

这很简单,但是Javafx需要一个特定的线程来运行,因此您必须使用Application扩展您的类并将所有代码放入start方法中。

如果您的应用程序的其余部分是基于控制台的,或者已经随心所欲地编写,那么您可能希望找到其他解决方案。

对于任何错别字或语法错误,我表示由衷的歉意,但英语并不是最常见的事情。