Java JFileChooser可以';t单击';选择';

Java JFileChooser可以';t单击';选择';,java,swing,jfilechooser,Java,Swing,Jfilechooser,在我的Java程序中,有一部分用户可以选择和更改工作目录。问题是,在选择目录路径后单击“选择”时,没有执行任何操作。选择窗口保持打开状态 但是,当我在“文件名”字段中输入任何文本或选择目录中的任何文件并单击“选择”时,窗口将关闭,目录将被选择 我的代码非常简单,我真的不明白为什么它不起作用。您可以在此处找到我的代码: JFileChooser chooser = new JFileChooser(); int returnVal = chooser.showOpenDialog(null); c

在我的Java程序中,有一部分用户可以选择和更改工作目录。问题是,在选择目录路径后单击“选择”时,没有执行任何操作。选择窗口保持打开状态

但是,当我在“文件名”字段中输入任何文本或选择目录中的任何文件并单击“选择”时,窗口将关闭,目录将被选择

我的代码非常简单,我真的不明白为什么它不起作用。您可以在此处找到我的代码:

JFileChooser chooser = new JFileChooser();
int returnVal = chooser.showOpenDialog(null);
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
if(returnVal == JFileChooser.APPROVE_OPTION) {
   stringHomeDir = chooser.getCurrentDirectory().getPath();
}
...
如何更改它,以便用户可以轻松地在文件选择器中选择目录

int returnVal = chooser.showOpenDialog(null);
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

这两条语句的顺序应该颠倒,因为
showOpenDilaog
方法会一直阻塞直到关闭。

更改语句的顺序并使用JFileChooser类的setSelectedFile(File)方法

JFileChooser chooser = new JFileChooser();
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

chooser.setSelectedFile(new File(chooser.getCurrentDirectory() + "/" + "Downloads")));

int returnVal = chooser.showOpenDialog(null);

...

“MyDocuments”是JFileChooser的默认当前目录,“Downloads”是“MyDocuments”的子目录。

在您做出有效选择之前,选择器可能不会关闭。您可以使用“取消”或[X]独立按钮关闭它。现在,目录路径显示在“文件名”字段中,并且正在执行“选择”操作。非常感谢。