JEditorPane: внешние ресурсы не разрешены - PullRequest
2 голосов
/ 20 февраля 2012

Я использую JEditorPane для отображения некоторых данных HTML, однако любые изображения, имеющие src="..." в другом месте / на сервере, не отображаются.Я предполагаю, что это какое-то ограничение безопасности;мой вопрос: могу ли я отображать данные за пределами URL JEditorPanes и если да, то как?

enter image description here

Если нет никаких способов отключить это, что было бы лучшеспособ разрешения этих внешних ресурсов при отображении HTML в среде AWT / SWING?

Код:

File f = new File("index.html");
JEditorPane jep = new JEditorPane(f.toURI().toURL());
JScrollPane sp = new JScrollPane(jep);

JFrame frame = new JFrame();
frame.add(sp);
jep.setEditable(false);

frame.setVisible(true);
frame.setSize(500, 500);
frame.setTitle(wpj.getParse().getTitle());

Спасибо Эндрю Томпсону за сообщение об ошибке в моем HTML-коде.Я обновил HTML, который теперь можно найти здесь: http://pastebin.com/EixG3WLH - Похоже, что любой неправильно сформированный HTML может привести к тому, что изображения не появятся.

Ответы [ 2 ]

4 голосов
/ 20 февраля 2012

Кажется, что здесь хорошо работает, используя файловый URL для HTML и с изображением на imgur.com.

ForeignImageInPane

import java.awt.*;
import javax.swing.*;
import java.io.File;

class ForeignImageInPane {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                File f = new File("index.html");
                try {
                    JEditorPane jep = new JEditorPane(f.toURI().toURL());

                    JScrollPane sp = new JScrollPane(jep);
                    sp.setPreferredSize(new Dimension(400,200));

                    JOptionPane.showMessageDialog(null, sp);
                } catch(Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
}

index.html

<html>
<body>
<img src='http://i.stack.imgur.com/WeiWi.png'>
</body>
</html>

Каковы фактические URL-адреса изображений?

Обновление

Также похоже, что он работает с URL-адресом, взятым непосредственно из HTML.Vis.

<html>
<body>
<img src='http://upload.wikimedia.org/wikipedia/commons/thumb/a/af/Kit_shorts.svg/100px-Kit_shorts.svg.png'>
</body>
</html>
2 голосов
/ 20 февраля 2012

Я создал JFrame с JEditorPane в моей IDE, и он работает.Что я сделал по-другому: конструктор был без параметра URL, а после frame.add (jep) я сделал jep.setPage(url).

Похоже, тип содержимого в вашем коде для загруженной страницы является text / plain isnне так ли?

...