2016-05-02 10 views
0

イメージをたくさん読み込み、読み込みを遅延させたい。この時点で、私はロードされたすべての画像を含むクラスを作成しました。遅延ローディングコードのコードを減らす

public static ImageIcon binIcon = getBinIcon(); 
private static ImageIcon getBinIcon() { 
    if(binIcon == null) { 
     return binIcon = FileManipulation.getImage("img/bin.jpg"); 
    } 
    else { 
     return binIcon; 
    } 
} 

public static ImageIcon checkboxIcon = getCheckboxIcon(); 
private static ImageIcon getCheckboxIcon() { 
    if(checkboxIcon == null) { 
     return checkboxIcon = FileManipulation.getImage("img/checkbox.png"); 
    } 
    else { 
     return checkboxIcon; 
    } 
} 

... 

最後に、コードを重複させることなく、セクシーな方法で減らしたいと考えています。

ありがとうございます。

+1

'getImageIcon(String filename)'メソッドに引数としてファイル名 '' img/checkbox.png "'を渡すのはなぜですか? –

+1

これは非常に奇妙です:あなたのアクセサメソッドはプライベートで、変数はpublicです。あなたはそれとは反対の方が良いでしょう! –

+0

さらに、 'binIcon'と 'checkboxIcon'を直接インスタンス化するので、遅延読み込みをしていません。 –

答えて

0

あなたがロードするアイコンとファイル名を受け取るメソッドを作成することができます。

public static ImageIcon checkboxIcon; 
public static ImageIcon binIcon; 

private static ImageIcon getCheckboxIcon(ImageIcon icon, String fileName) { 
    return icon == null ? FileManipulation.getImage(fileName) : icon; 
} 

それはあなたがアイコンをこのようにロードすることができます:単に指向

binIcon = getCheckboxIcon(binIcon, "img/bin.png"); 
checkboxIcon = getCheckboxIcon(checkboxIcon, "img/checkbox.png"); 
+0

@ marco13感謝しています。 – Nirekin

+0

イメージを一度だけロードしたいと思います。ここでは、すべてのコールでリロードされます。 –

+0

パラメータとして渡したアイコンがnullの場合にのみ、イメージはロードされません。そうでない場合は、すでに読み込まれたアイコンが返されます。 – Nirekin

1

は、オブジェクト - class LazyImageIcon extends ImageIcon 。その後、コンストラクタに正しいイメージサイズが与えられていれば、最初のペイントに読み込みを延期することさえできます。

関連する問題