0

标题有点漫无边际,但不确定描述它的最佳方式。仍然是一个 Java 新手(从 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。

4

3 回答 3

0
  1. 在服务器上找到该目录的“真实路径”。用它来建立一个File对象。
  2. 为PNG创建一个FilenameFilter
  3. File.listFiles(FilenameFilter)在该源目录上使用。这将返回一个File[]包含对 PNG 文件的引用。

那是假设图像在类路径上,作为松散的File资源。如果它们在 Jar 中,我们必须迭代ZipEntryJar 的对象以动态发现其中包含的内容。

于 2013-09-01T03:37:02.433 回答
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()));
    }
}
于 2013-09-01T03:38:09.830 回答
-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());
}

如果你不是,那么修改代码不会那么难,但你会明白一般的想法。

于 2013-09-01T03:42:10.777 回答