Java swing – 在JPanel上动态显示多个图像

我搜索了许多地方在JPanel上动态添加和显示图像但无法得到适当的帮助。 基本上我有JPanel,我必须垂直显示许多图像,但它应该是动态的。

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

macthedImages是一个bufferedImages数组,searchResultPanel是JPanel

如果要同时显示所有图像,请使用GridLayout,但必须考虑网格布局的行和列。

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

或者,如果您想一次显示一个图像,请使用CardLayout。 喜欢这个:

 CardLayout cl = new CardLayout(); for(int i=0;i 

在第二个选项中,您可以通过触发事件显示任何图像。 它提供了许多方法

1)你必须设置适当的LayoutManager ,

2)对于JLabel中的大量图像,将是GridLayout的最佳选项,以防您想要在一个JPanel上查看所有图像

3)使用CardLayout ,如果你想单独看每个图像

4)也许没有必要重新创建

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

只是为了设定

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

5)也许把JPanel放到JSCrollPane

6)如果你在运行时添加/删除JCOmponents你必须调用

 revalidate(); repaint()// sometimes required