我可以创建一个包含多个图像的JFrame吗?

时间:2010-01-28 15:25:50

标签: java user-interface swing jframe

这是我的问题:

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

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

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

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

由于

4 个答案:

答案 0 :(得分:5)

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

alt text http://27.media.tumblr.com/NngfN9gsDqq8kydsfeAglIJXo1_400.png

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

答案 1 :(得分: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]))));
  }
 }

答案 2 :(得分:2)

如果你使用JInternalFrame,你可以拖动图片并改变尺寸。

答案 3 :(得分:1)

根据您的问题,我假设您可以在JPanel中显示图片。在这种情况下,您可以保留JPanels列表并动态更新此列表。当然,JFrame上绘制的布局完全取决于您,但对于像这样的工作,您可能希望使用GridLayoutBoxLayout

保留JPanels列表:

ArrayList<JPanel> panelList = new ArrayList<JPanel>();
...
panelList.add(new JPanel());
...
panelList.clear();