2011-12-14 22 views
0

JPanelで画像を動的に追加したり表示したりするのに多くの場所を検索しましたが、適切なヘルプが得られませんでした。 基本的に私はJPanelを縦にたくさんの画像を表示する必要がありますが、動的でなければなりません。Javaスイング - JPanelで複数の画像を動的に表示

for(int i=0;i<macthedImages.length;i++) { 
    JLabel jLabel = new JLabel(new ImageIcon(macthedImages[i])); 
    searchResultPanel.add(jLabel); 
} 

macthedImages JLabelの内の画像の多くのためのBufferedImage の配列searchResultPanelあなたはLayoutManager適切に設定する必要がJPanelの

+0

OK、問題は何ですか? – SuperTron

+0

実行後にイメージが表示されない –

+0

イメージが実際にアレイに入っていますか? – SuperTron

答えて

1

すべての画像を同時に表示するには、GridLayoutを使用しますが、グリッドレイアウトの行と列を考慮する必要があります。

GridLayout gl = new gridLayout(2,macthedImages.length/2); 

また、一度に1つの画像を表示する場合は、CardLayoutを使用します。このように:

CardLayout cl = new CardLayout(); 
for(int i=0;i<macthedImages.length;i++){ 
     JLabel jLabel = new JLabel(new ImageIcon(macthedImages[i])); 
     cl.add(jLabel, "jLabel"+i); 
    } 

2番目のオプションでは、イベントを発生させることでイメージを表示できます。それは多くを提供しますmethods

+0

私はJPanelにGridLayoutを入れましたが、それはうまく動作しません –

+0

それは動作します。利用した。このコードを書いてください。 JPanel jp = new JPanel(); GridLayout gl =新しいGridLayout(2,5); jp.setLayout(gl); –

+0

Abhishekは助けてくれてありがとうございますが、私は同じイメージをそこに得ることができませんでした –

2

1)、

2であるが)で、GridLayout最良の選択肢だろうです1つのJPanelですべての画像を表示する場合

3)各画像を分離して表示する場合は、CardLayoutを使用してください。

4)多分そこには必要な再作成しない

JLabel jLabel = new JLabel(new ImageIcon(macthedImages[i])); 

のみ

jLabel[i].setIcon(macthedImages[i]); 

5を設定するには)多分JSCrollPane

6へのJPanelを置く)あなたは/追加する場合にJComponentのを削除あなたが電話するランタイム

revalidate(); 
repaint()// sometimes required