Java 将默认JFileChooser目录设置为JAR位置的相对路径

Java 将默认JFileChooser目录设置为JAR位置的相对路径,java,swing,Java,Swing,只是简单总结一下我希望做的事情: 目前,我在家庭网络的共享文件夹上有一个Swing应用程序(仅供个人使用,因此在这种情况下,方便胜过最佳实践)。这个应用程序是一个地图编辑器,我在家里的两台不同的计算机上使用它,如果我需要在完全不同的位置工作,我也希望在其他计算机上使用它 长话短说,我试图找到一种方法来设置它,以便在运行JAR文件并打开文件选择器时,JFileChooser默认为JAR所在的目录(或者更好,是JARs根文件夹中的文件夹)。实际上,我只能通过JFileChooser构造函数分配一个绝

只是简单总结一下我希望做的事情:

目前,我在家庭网络的共享文件夹上有一个Swing应用程序(仅供个人使用,因此在这种情况下,方便胜过最佳实践)。这个应用程序是一个地图编辑器,我在家里的两台不同的计算机上使用它,如果我需要在完全不同的位置工作,我也希望在其他计算机上使用它

长话短说,我试图找到一种方法来设置它,以便在运行JAR文件并打开文件选择器时,JFileChooser默认为JAR所在的目录(或者更好,是JARs根文件夹中的文件夹)。实际上,我只能通过JFileChooser构造函数分配一个绝对目录。我现在正在这样做(使用网络目录),但更喜欢相对设置


这可能吗?我无法摆脱我做错了什么的感觉,因为我想象这是一个常见的问题,但我似乎在任何地方都找不到它被问过(或者更确切地说,我在搜索时看不到任何答案)

您可以使用类似以下内容从JAR文件中的一个类中获取JAR文件的来源:

ProtectionDomain pd = ThatClass.class.getProtectionDomain();
CodeSource cs = pd.getCodeSource();
URL location = cs.getLocation();

您可以使用
getClass().getProtectionDomain().getCodeSource().getLocation()
获取实际的JAR位置,然后对其进行解析,并使用JFileChooser的
setCurrentDirectory()
对其进行设置。

您可以在代码中使用此选项:

JFileChooser  fc = new JFileChooser();
fc.setCurrentDirectory(new File("."));

它将文件选择器的默认位置设置为jar文件的位置

奇怪的是,没有其他办法,但这肯定会成功,谢谢你的回答!酷,克鲁格也是这么说的。谢谢你们两位的回答,这是非常有帮助的“我想这将是一个共同的问题”想象力是一件美妙的事情,不是吗?OTOH,很少有人编写GUI纯粹是为了自己使用,还有很多应用程序。安装在用户不应浏览的位置,而其他位置的部署方式使Oracle认为安装路径不是应用程序的业务(并将主动隐藏路径)。