Могу ли я создать JFrame с несколькими изображениями? - PullRequest
1 голос
/ 28 января 2010

Вот моя проблема:

У меня есть приложение, которое на каждой итерации возвращает мне список изображений. Изображения имеют разные размеры, и число отображаемых изображений меняется каждый раз.

Есть ли способ показать в jFrame все изображения, не зная количества jPanels для создания? Есть ли простой способ сделать это?

Обс .: Изображения должны отображаться одновременно, рядом или в списке, потому что они используются для сравнения.

Obs.2: Количество отображаемых изображений составляет около 20-60 за каждый раз.

Спасибо

Ответы [ 4 ]

5 голосов
/ 28 января 2010

Поскольку вы хотите видеть все свои изображения на одной панели, я предлагаю вам использовать алгоритм TreeMap для отображения ваших панелей, используя размер вашего изображения в качестве веса каждого изображения. Затем измените размер каждого изображения, чтобы оно могло поместиться на каждой панели.

alt text
(источник: tumblr.com )

См. Реализацию Java здесь: http://plindenbaum.blogspot.com/2009/08/treemap-for-friendfeed.html

3 голосов
/ 28 января 2010

это решение должно работать:

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 голосов
/ 28 января 2010

Если для этого вы используете JInternalFrame , вы можете перетаскивать картинки и изменять размер.

1 голос
/ 28 января 2010

Исходя из вашего вопроса, я предполагаю, что вы можете показывать изображения в формате JPanel. В этом случае вы можете сохранить список JPanels и динамически обновлять этот список. Конечно, макет на JFrame полностью зависит от вас, но для такой работы вы можете использовать GridLayout или BoxLayout.

Чтобы сохранить список JPanels:

ArrayList<JPanel> panelList = new ArrayList<JPanel>();
...
panelList.add(new JPanel());
...
panelList.clear();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...