【发布时间】:2015-11-01 05:44:32
【问题描述】:
我想在不使用图像名称的情况下从 eclipse 的资源文件夹中读取图像。截至目前,我正在从当前目录读取它并采用绝对路径(photoPath),以便我可以在 JFrame 的其他面板中重现图像。但是,如果我让可执行 jar 开始从当前目录获取图像,我的图像文件夹就不会出现。这是我的图像选择代码
imageChooser = new JButton("ImageChooser");
panel1.add(imageChooser);
fc = new JFileChooser();
imageLabel = new JLabel();
imageChooser.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
fc.setCurrentDirectory(new File("."));
int result = fc.showOpenDialog(imageChooser);
if (result == JFileChooser.APPROVE_OPTION) {
currentFile = fc.getSelectedFile();
imageLabel.setIcon(new ImageIcon(currentFile.toString()));
panel1.add(imageLabel);
panel1.validate();
photoName=fc.getSelectedFile().getName();
photoPath = currentFile.getAbsolutePath();
}
}
});
这是我的结构
【问题讨论】:
-
列出嵌入在你的jar应用程序中的资源特别容易,它需要你对应用程序的状态做出很多假设。在这些情况下,我倾向于使用另一个文件,按名称列出所有资源。我要么手动更新文件,要么使用某种构建自动化来生成文件。这意味着我的整个入口点都围绕单个文件,而不是需要对 Jar 文件的位置(或哪个 jar 文件包含图像)做出假设
-
我真的很抱歉,但无法理解你!如果我做 getclass(). getResources() 我需要指定图像名称,。你能给我一些建议吗?
-
因此,将文件的名称放入一个文本文件中,该文件也嵌入在您的应用程序中,它应该包含图像列表。使用它可以让您在运行时加载图像而无需知道名称。 For example
-
你是把图片打包到你的jar还是单独的文件夹里?
-
currentFile = fc.getSelectedFile(); imageLabel.setIcon(new ImageIcon(currentFile.toString()));我希望人们能够真正阅读 Java 文档以了解他们使用的方法和构造函数。如果你在这种情况下,你可能已经注意到ImageIcon接受File以及String..