这是我的问题:
我有一个应用程序,每次迭代它都会返回给我一个图像列表。图像具有不同的大小,并且每次显示的图像数量都不同。
有没有办法在不知道要创建的 jPanel 数量的情况下在 jFrame 中显示所有图像?有没有简单的方法可以做到这一点?
观察:图像应同时显示,例如并排或列出,因为它们用于比较目的。
Obs.2:每次要显示的图像数量约为20-60。
谢谢
这是我的问题:
我有一个应用程序,每次迭代它都会返回给我一个图像列表。图像具有不同的大小,并且每次显示的图像数量都不同。
有没有办法在不知道要创建的 jPanel 数量的情况下在 jFrame 中显示所有图像?有没有简单的方法可以做到这一点?
观察:图像应同时显示,例如并排或列出,因为它们用于比较目的。
Obs.2:每次要显示的图像数量约为20-60。
谢谢
由于您想在同一个面板中查看所有图像,我建议您使用TreeMap 算法来显示面板,使用图像的尺寸作为每个图像的权重。然后,调整每个图像的大小,使其适合每个面板。
(来源:tumblr.com)
在此处查看 Java 实现:http: //plindenbaum.blogspot.com/2009/08/treemap-for-friendfeed.html
该解决方案应该有效:
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]))));
}
}
根据您的问题,我假设您能够在JPanel
. 在这种情况下,您可以保留一个列表JPanels
并动态更新该列表。当然,要绘制的布局JFrame
完全取决于您,但是对于这样的工作,您可能想要使用GridLayout
or BoxLayout
。
要保留 JPanel 列表:
ArrayList<JPanel> panelList = new ArrayList<JPanel>();
...
panelList.add(new JPanel());
...
panelList.clear();