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