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:你需要使用某种类型的设置文件或属性文件,这样程序才能知道在哪里查找。或者将文件位置加载到命令行参数中。