java - 使用 NetBeans 通过 java 程序导出图像

标签 java image

我知道留言板上有一千个关于这个问题的答案,我已经尝试了所有这些答案,但无论出于何种原因,它们都不起作用。这是我的代码的摘录:

 ImageIcon icon = new ImageIcon("/home/james/programmingpics/A_Flute");        
    ImageIcon icon1 = new ImageIcon("/home/james/programmingpics/C_D_Flute");
    ImageIcon icon2 = new ImageIcon("/home/james/programmingpics/D_E_Flute");
    ImageIcon icon3 = new ImageIcon("/home/james/programmingpics/E_Flute");       
    ImageIcon icon4 = new ImageIcon("/home/james/programmingpics/F_G_Flute");        
    ImageIcon icon5 = new ImageIcon("/home/james/programmingpics/G_Flute");
    ImageIcon icon6 = new ImageIcon("/home/james/programmingpics/B_Flute");
    ImageIcon icon7 = new ImageIcon("/home/james/programmingpics/C_Flute");
    ImageIcon icon8 = new ImageIcon("/home/james/programmingpics/D_Flute");        
    ImageIcon icon9 = new ImageIcon("/home/james/programmingpics/F_Flute");

非常简单,在我的计算机上运行完美。每当我压缩 dist 文件夹并将图片从计算机上的目录中移出并运行程序时,我都会得到空的 JFrame。所以我然后做了项目/属性/源/添加文件夹的事情,编译它,仍然是相同的结果。然后我将classes文件夹移动到dist文件夹中,尝试更改路径并查看是否有效,但仍然没有任何效果。听起来这个问题有一个简单的答案,但我显然错过了它。

最佳答案

您在构造函数中使用绝对路径名。绝对路径名的示例为“/home/myusername/folder/foo/bar.png”或“C:\Folder\Graphics\foo\bar.png”。 您在帖子中给出的代码始终希望在运行时从给定路径中准确读取。如果将图形移动到其他文件夹,程序将无法找到它们。这样,图形不会包含/打包到您的程序中,而是在运行时(而不是编译时!)从构造函数中指定的路径加载。

这样的绝对路径是非常糟糕的做法,因为它们会阻止程序的可移植性。其他人将无法在他们的计算机上运行您的程序。因为如果您尝试在另一台计算机上运行该代码,代码可能会失败,因为该计算机上可能不存在路径“/home/james/...”。也许您的用户甚至不使用 Linux,或者至少他的用户名不是“james”。

所以你必须摆脱绝对路径。相反,您应该小心地将图形包含在项目中并将它们放入 JAR 存档中。

一种方法是将图形放入项目的目录结构中,然后执行如下操作:

URL imageURL = getClass().getClassLoader().getResource("images/A_Flute.png");
ImageIcon fluteIcon = new ImageIcon(imageURL);

如果您的图形保留在您的主文件夹中,这当然不起作用。您必须复制图形。

关于java - 使用 NetBeans 通过 java 程序导出图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15721823/

相关文章:

java - 如何更改 iTextPdf 中注释的字体大小?

c# - byte[] 到字符串到字节数组的转换在 java 中不能正常工作

javascript - 我怎样才能让 <img> 元素重新评估它的 onerror?

html - 在固定大小的 div 中调整图像大小

javascript - html/javascript/css 中的打包图像流

使 imageView 圆形不起作用的 Android 代码

image - Facebook 图形 API : upload multipart/form-data encoded image

java - 用于解析 csv 中的文件扩展名的正则表达式

java - 使用 java.io.file 的 jenkins 管道始终引用 master

java - shutdown 和 awaitTermination 哪个第一次调用有什么区别?