标题有点漫无目的,但不确定描述它的最佳方式。还是一个Java newb(从Obj-C过渡)所以我知道如何编码但不确定是否/如何在java中专门应用它。
基本上,我想这样做:
ImageIcon a0amora = new ImageIcon(this.getClass().getResource("resource/" + "a0amora.png"));
ImageIcon a1act1 = new ImageIcon(this.getClass().getResource("resource/" + "a1act1.png"));
ImageIcon a2hello = new ImageIcon(this.getClass().getResource("resource/" + "a2hello.png"));
ImageIcon a3anyonethere = new ImageIcon(this.getClass().getResource("resource/" + "a3anyonethere.png"));
ImageIcon a4imhere = new ImageIcon(this.getClass().getResource("resource/" + "a4imhere.png"));
ImageIcon a5stuck = new ImageIcon(this.getClass().getResource("resource/" + "a5stuck.png"));
ImageIcon a6silence = new ImageIcon(this.getClass().getResource("resource/" + "a6silence.png"));
ImageIcon a7ashamed = new ImageIcon(this.getClass().getResource("resource/" + "a7ashamed.png"));
ImageIcon a8free = new ImageIcon(this.getClass().getResource("resource/" + "a8free.png"));
ImageIcon a9endact = new ImageIcon(this.getClass().getResource("resource/" + "a9endact.png"));
但是在一个程序中,它将读取文件夹中的所有PNG并创建一个以文件名命名的新ImageIcon,因此我不必手动分配每个PNG。
答案 0 :(得分:0)
File
对象。FilenameFilter
。File.listFiles(FilenameFilter)
。这将返回包含对PNG文件的引用的File[]
。假设图像在类路径上,就像松散的File
资源一样。如果它们在Jar中,我们必须迭代Jar的ZipEntry
个对象,以动态发现它包含的内容。
答案 1 :(得分:0)
我列出了目标目录中的文件,并将它们全部添加到Map
这样的内容......
File directory = new File("resource");
Map<String, ImageIcon> iconMap = new HashMap<String, ImageIcon>();
for (File file : directory.listFiles())
{
// could also use a FileNameFilter
if(file.getName().toLowerCase().endsWith(".png"))
{
iconMap.put(file.getName(), new ImageIcon(file.getPath()));
}
}
答案 2 :(得分:-1)
如果您使用的是Java 8,可以尝试这样的方法:
public List<ImageIcon> get(){
final FileFilter filter = f -> f.getName().endsWith(".png");
final File res = new File(getClass().getResource("resource").getPath());
return Arrays.asList(res.listFiles(filter)).stream().map(f -> new ImageIcon(f.getPath())).collect(Collectors.toList());
}
如果你不是,修改代码并不难,你会得到一般的想法。