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

时间:2012-11-16 20:29:09

标签: java swing

快速总结一下我希望做的事情:

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

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

这样的事情可能吗?我无法摆脱我做错事的感觉,因为我想这会是一个常见的问题,但我似乎无法在任何地方找到它(或者说,我搜索时没有看到任何答案)

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

您可以在代码中使用它:

        $('.slick-slide').hover(
            function() {
                if (!$(this).hasClass('slick-center')) {
                    return false;
                }
                if ($(this).hasClass('slick-center')) {
                    $('.product-slider__background').stop().animate({
                        backgroundPositionY: '-5px'
                    }, 150, 'linear');
                }
            },
            function () {
                if (!$(this).hasClass('slick-center')) {
                    return false;
                }
                $('.product-slider__background').stop().animate({
                    backgroundPositionY: '0'
                }, 150, 'linear');
            }
        );

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