Конвертировать URL изображения в реальное изображение при открытии документа - PullRequest
0 голосов
/ 04 января 2012

Когда я открываю свой файл в моем текстовом редакторе.Я только получаю местоположение файла в текстовой панели.Я где-то совершаю простую ошибку или есть лучший способ сделать это?Должен ли я использовать ArrayList для хранения местоположений изображений?

Пример того, что происходит: у меня есть файл, который имеет две строки ...


C: \ ... \pic.png
(описание изображения)


Когда я пытаюсь открыть файл (после сохранения в текстовом редакторе), он показывает фактическое местоположение картинки.Я хочу иметь возможность использовать BufferedImage, чтобы получить каталог и добавить изображение в JTextPane.В противном случае (если текст не является местоположением), просто добавьте текст в область текста.

К вашему сведению: textArea имеет тип JTextPane

Код, открывающий мой файл


// sb is my StringBuffer

try
{
    b = new BufferedReader(new FileReader(filename));
    String line;

    while((line=b.readLine())!=null)
    {
        if (line.contains("C:\\...\\Pictures\\"))
        {
            BufferedImage image = ImageIO.read(new File(line));
            ImageIcon selectedPicture = new ImageIcon(image);
            textArea.insertIcon(selectedPicture);
        }

        sb.append(line + "\n");
        textArea.setText(sb.toString());
    }

    b.close();
}

Если у вас есть какие-либо вопросы по поводу этого кода или вам требуется разъяснение, не стесняйтесь спрашивать.

1 Ответ

1 голос
/ 05 января 2012

OK. То, как вы устанавливаете контент на JTextPane, неверно. Основная хитрость заключается в том, чтобы получить StyleDocument из JTextPane и затем установить Style в документе. Стиль в основном объясняет, как компонент должен быть представлен. Например, форматирование текста, значки изображений, интервалы и т. Д.

Учитывая, что следующий код поможет вам начать.

    JTextPane textPane = new JTextPane();
    try {
        BufferedReader b = new BufferedReader(
                new FileReader("inputfile.txt"));
        String line;
        StyledDocument doc = (StyledDocument) textPane.getDocument();

        while ((line = b.readLine()) != null) {

            if (line.contains("/home/user/pictures")) {
                Style style = doc.addStyle("StyleName", null);
                StyleConstants.setIcon(style, new ImageIcon(line));
                doc.insertString(doc.getLength(), "ignore", style);

            } else {
                Style textStyle = doc.addStyle("StyleName", null);
                //work on textStyle object to get required color/formatting.
                doc.insertString(doc.getLength(), "\n" + line, textStyle);
            }
        }

        b.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...