这是我的问题:
我有一个应用程序,每次迭代它返回给我一个图像列表。图像具有不同的大小,每次显示的图像数量都不同。
有没有办法在jFrame中显示所有图像而不知道要创建的jPanel数量?有没有一种简单的方法可以做到这一点?
Obs。:图像应该同时显示,如并排或列出,因为它们用于比较目的。
Obs.2:每次显示的图像数量约为20-60。
由于
答案 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
上绘制的布局完全取决于您,但对于像这样的工作,您可能希望使用GridLayout
或BoxLayout
。
保留JPanels列表:
ArrayList<JPanel> panelList = new ArrayList<JPanel>();
...
panelList.add(new JPanel());
...
panelList.clear();