1

这是我的问题:

我有一个应用程序,每次迭代它都会返回给我一个图像列表。图像具有不同的大小,并且每次显示的图像数量都不同。

有没有办法在不知道要创建的 jPanel 数量的情况下在 jFrame 中显示所有图像?有没有简单的方法可以做到这一点?

观察:图像应同时显示,例如并排或列出,因为它们用于比较目的。

Obs.2:每次要显示的图像数量约为20-60。

谢谢

4

4 回答 4

5

由于您想在同一个面板中查看所有图像,我建议您使用TreeMap 算法来显示面板,使用图像的尺寸作为每个图像的权重。然后,调整每个图像的大小,使其适合每个面板。

替代文字
(来源:tumblr.com

在此处查看 Java 实现:http: //plindenbaum.blogspot.com/2009/08/treemap-for-friendfeed.html

于 2010-01-28T16:18:02.407 回答
3

该解决方案应该有效:

class MyFrame extends JFrame
{
MyFrame(Image images[])
 {
 JTabbedPane tabbed= new JTabbedPane();
 setContentPane(tabbed);
 for(int i=0;i< images.length;++i)
  {
  tabbed.addTab("Image "+i, new JScrollPane(new JLabel(new ImageIcon(images[i]))));
  }
 }
于 2010-01-28T15:33:03.650 回答
2

如果为此使用JInternalFrame ,您也可以拖动图片并更改大小。

于 2010-01-28T16:47:41.877 回答
1

根据您的问题,我假设您能够在JPanel. 在这种情况下,您可以保留一个列表JPanels并动态更新该列表。当然,要绘制的布局JFrame完全取决于您,但是对于这样的工作,您可能想要使用GridLayoutor BoxLayout

要保留 JPanel 列表:

ArrayList<JPanel> panelList = new ArrayList<JPanel>();
...
panelList.add(new JPanel());
...
panelList.clear();
于 2010-01-28T15:33:48.130 回答