我使用JFileChooser
来让用户 Select 他们的文件夹.
用户在他们意想不到的地方触发了执行,因为JFileChooser
在Folder Name:
字段中提供了默认值.具体地说,他们试图点击其他东西,但JFileChooser
就在他们计划点击的地方下方弹出,导致他们点击了Open
按钮.
通常,我会通过简单地判断他们 Select 的目录是否是JFileChooser
Select 的默认目录来解决这个问题,但有时用户也想在那里运行一些东西.只是不是在那个特定的时间.
从技术上讲,如果 Select 的内容与默认设置相同,我仍然可以弹出警告.但我觉得一个更干净的解决方案是从空白开始,直到用户在JFileChooser
上 Select 一个文件夹.更明显的是,用户并不想 Select 任何东西.避免再次弹出窗口对可用性更好.
或者,我会接受关闭Open
按钮的能力,直到他们在对话框上做出某种形式的 Select .
最后,我知道可以 Select 扩展JFileChooser
来添加一些定制逻辑.这似乎是我的最终解决方案,如果您想提供一个实现,那将是锦上添花.然而,优先考虑允许我在对话框弹出时简单地清除Folder Name:
字段(或禁用按钮)102的答案.
如果您看到了更好的前进方向,请随时建议替代解决方案.我已经有了一个有效的解决方案(向用户弹出一个警告,或者使用继承),但如果可能的话,我想要一个更好的解决方案.
这里有一个完整的、可运行的例子.
import javax.swing.JFileChooser;
import java.io.File;
import java.nio.file.Path;
public class SOQ_20240309_132700
{
public static void main(String[] args)
{
JFileChooser c = new JFileChooser();
File dir = Path.of(".").toFile(); //Just pointing to my current directory for example sake. Replace if you like.
c.setCurrentDirectory(dir); //I need to set the location where the chooser starts from.
c.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
c.setSelectedFile(null); //This doesn't seem to clear out the box
c.showOpenDialog(null);
//How do I make the chooser have a starting directory without populating foldername?
}
}