Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 具有不同路径的JButton图像_Java_Swing_Jbutton - Fatal编程技术网

Java 具有不同路径的JButton图像

Java 具有不同路径的JButton图像,java,swing,jbutton,Java,Swing,Jbutton,我在我的JButton中添加了一个图标,图像是从项目文件中的特定路径拍摄的。但问题是在另一台机器上,路径可能略有不同 例如,我的整个图像路径是home/jon/hello/folder/image.png,但在另一台机器上,路径可能是/project/folder/william/hello/folder/image.png。这意味着路径的起始部分不同,但与hello部分相同 如何使按钮代码中的路径与差异相匹配?我的按钮代码如下: btn = new JButton(BUTTON_COL

我在我的
JButton
中添加了一个图标,图像是从项目文件中的特定路径拍摄的。但问题是在另一台机器上,路径可能略有不同

例如,我的整个图像路径是
home/jon/hello/folder/image.png
,但在另一台机器上,路径可能是
/project/folder/william/hello/folder/image.png
。这意味着路径的起始部分不同,但与hello部分相同

如何使按钮代码中的路径与差异相匹配?我的按钮代码如下:

    btn = new JButton(BUTTON_COLLAPSE_NESTED().toString());
    btn.setIcon(newImageIcon("home/jon/hello/folder/image.png"));
    btn.setActionCommand(BUTTON_COLLAPSE_NESTED().toString());
    btn.addActionListener(btnListener);
    btnPnl.add(btn);

这就是为什么不应该使用绝对路径。将映像放在jar中,并使用到资源的相对路径,该路径基于到类文件的类路径

例如,如果
image.png
位于类文件文件夹外的images文件夹中,您可以执行以下操作:

URL url = getClass().getResource("/images/image.png");
BufferedImage img = ImageIO.read(url);
ImageIcon icon = new ImageIcon(img);

或者类似的东西。

我实际上已经有了一个现有的图像文件夹,这是我正在处理的项目的默认设置。这个位置不在jar中,我需要使用这个文件夹来存储图像。路径是hello/folder/image.png。这还能用吗?它只是给JButtonI添加一个图标,我需要它在不移动图像位置的情况下工作。不管你是否把它放在jar中,它是否会与你的应用打包在一起?如果不是,为什么要让你的应用依赖于某个最终用户的文件系统?@johnmars:你需要使用某种类型的设置文件或属性文件,这样程序才能知道在哪里查找。或者将文件位置加载到命令行参数中。