Я получаю 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?
Возможно, используя что-то вроде этого примера
Вот как вы можете выровнять изображения по вертикали в 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 помогли мне получить желаемый результат.
См. JTextPane добавление новой строки