Как отображать ImageIcons в JTextPane только вертикально, один под другим?

Я получаю BufferdImages с устройства, преобразовываю их в ImageIcons и показываю их в JTextPane.

public static void insertImage(BufferedImage img, JTextPane jTextPane){

    ImageIcon icon = new ImageIcon(img);
    jTextPane.insertIcon(icon);

}

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

Я пробовал делать jTextPane.setText("\n"); после добавления каждого изображения, но это только сбрасывало всю jTextPane.

Мне нужно показать эти изображения в приложении Swing среди некоторых других данных, и если у кого-то есть лучшее предложение о том, что использовать вместо jTextPane для этой цели, предложите его.

Заранее спасибо.

Рассматривали ли вы возможность использования текста на основе HTML?

MadProgrammer 01.01.2023 11:51

Возможно, используя что-то вроде этого примера

MadProgrammer 01.01.2023 12:27
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
3
56
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вот как вы можете выровнять изображения по вертикали в JTextPane, используя базовый StyledDocument. С помощью этого документа вы можете вручную добавлять разрывы строк в любом месте по вашему выбору.

BufferedImage img1 = ...
BufferedImage img2 = ...

// add first image
jTextPane.insertIcon(img1);

// add line break at the end
StyledDocument doc = jTextPane.getStyledDocument();
doc.insertString(doc.getLength(), "\n" , null);

// add second image
jTextPane.insertIcon(img2);

Спасибо, и ваш, и комментарий/пример от @MadProgrammer помогли мне получить желаемый результат.

Danilo Djurovic 05.01.2023 22:31

Другие вопросы по теме