Как добавить JLabel в JPanel по вертикали? - PullRequest
0 голосов
/ 28 ноября 2018

Я бы хотел добавить JLabels динамически в JPanel вертикально, как изображение, которое я прикрепил.После загрузки всех изображений мне нужно выбрать изображение, затем выбранное изображение должно появиться в другой JPanel.Я читаю Изображения из ArrayList, который содержит пути.

Я использовал Jpanel с GridLayout в JScrollPane, но результат не тот, который я хочу.

Это код, который яИспользуется для добавления Jlabels:

for(String file: files) {                   
                    JLabel JLabelPicture = new JLabel(new ImageIcon(file));
                    panel_images.add(JLabelPicture);
                }

enter image description here

1 Ответ

0 голосов
/ 28 ноября 2018

Я использовал Jpanel с GridLayout в JScrollPane, но результат не тот, который я хочу.

A GridLayout позволит вам отображать компоненты по вертикали.Когда вы создаете панель, вы просто используете:

JPanel imagePanel = new JPanel( new GridLayout(0, 1) );

Это позволит изменить размеры всех изображений до одного размера.

Другой вариант - использовать вертикальную BoxLayout.В этом случае вы можете использовать:

Box imagePanel = Box.createVerticalBox();

В этом случае изображения сохранят свой предпочтительный размер.

В обоих случаях вы добавляете на панель панель прокрутки, которая добавляется к вашему.frame:

frame.add( new JScrollPane( imagePanel ) );

Прочтите руководство по Swing на Менеджеры макетов для получения дополнительной информации и рабочих примеров каждого макета.

Редактирование:

после перечисления изображений мне нужно выбрать одно из них,

Хорошо, где было это требование в вашем первоначальном вопросе?Полное требование должно быть определено в вопросе, чтобы вся информация была в одном месте, чтобы все могли ее видеть.

Поэтому я бы посоветовал вам использовать JList для отображения Icon.Прочитайте раздел из учебника по Swing на Как использовать списки для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...