0

タイトルは少しとりとめのないものですが、それを説明する最善の方法がわかりません。まだ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 を作成する手順では、それぞれを手動で割り当てる必要はありません。

4

3 に答える 3

0
  1. サーバー上のそのディレクトリへの「実際のパス」を見つけます。オブジェクトを確立するために使用しFileます。
  2. FilenameFilterPNG 用の を作成します。
  3. File.listFiles(FilenameFilter)そのソース ディレクトリで使用します。File[]これは、PNG ファイルへの参照を含むを返します。

Fileこれは、イメージがルーズリソースとしてクラスパス上にあることを前提としています。それらが Jar 内にある場合、Jar のZipEntryオブジェクトを繰り返し処理して、その内容を動的に検出する必要があります。

于 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 に答える