Java JEditorPane不设置任何HTML

Java JEditorPane不设置任何HTML,java,html,image,swing,jeditorpane,Java,Html,Image,Swing,Jeditorpane,我已经搜索过了,还没有看到任何人体验过我的样子。。然而,这是我面临的问题: 我正在尝试将一小段HTML设置为JEditorPane的文本。 代码如下: JEditorPane htmlPane = new JEditorPane(); String imageString = "<img src=\"http://tfwiki.net/mediawiki/images2/thumb/3/37/Optimusg1.jpg/350px-Optimusg1.jpg\"/>"; Stri

我已经搜索过了,还没有看到任何人体验过我的样子。。然而,这是我面临的问题:

我正在尝试将一小段HTML设置为JEditorPane的文本。 代码如下:

JEditorPane htmlPane = new JEditorPane();
String imageString = "<img   src=\"http://tfwiki.net/mediawiki/images2/thumb/3/37/Optimusg1.jpg/350px-Optimusg1.jpg\"/>";
String description = "<table width=300 border=0 cellspacing=0></table>" + imageString + "</table>";
htmlPane.setContentType("text/html");
htmlPane.setText(description);
JEditorPane htmlPane=new JEditorPane();
字符串imageString=“”;
字符串说明=“图像字符串+”;
setContentType(“text/html”);
htmlPane.setText(说明);
但在调用setText之后,编辑器窗格的内容是:

<html>
  <head>

  </head>
  <body>
  </body>
</html>

我尝试过将
添加到字符串的开头和结尾,但没有成功。有人知道我错过了什么或做错了什么吗


我正在使用Java 1.7.05532位。

经过一点测试,我发现

  • HTML必须在
    JEditorPane
    接受它之前形成良好的格式,事实上,它似乎自己进行了一些验证,删除了无效的标记……有趣的东西
  • 我必须将表行和单元格
    包含到表中
  • 如果HTTP头没有合适的头,某些站点可能会主动阻止图像的下载,这意味着您示例中的图像在
    JEditorPane
    中反复下载失败,即使相同的HTML会在浏览器中加载图像(如Chrome)
  • 有时,在HTML中添加额外的内容以确保它呈现的是您所想的内容是很有帮助的,例如,我只需添加一些文本,将表格边框设置为
    1
    ,并向图像添加
    alt
    标记,这有助于验证某些元素实际呈现的位置

导入java.awt.BorderLayout;
导入java.awt.EventQueue;
导入javax.swing.JEditorPane;
导入javax.swing.JFrame;
导入javax.swing.JScrollPane;
导入javax.swing.UIManager;
导入javax.swing.UnsupportedLookAndFeelException;
公共级二托烷{
公共静态void main(字符串[]args){
新的TestEditorPane();
}
公共试验品二托烷(){
invokeLater(新的Runnable(){
@凌驾
公开募捐{
试一试{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch(ClassNotFoundException |实例化Exception | IllegalacessException |不支持ookandfeelException ex){
}
JEditorPane htmlPane=新的JEditorPane();
String description=“Hello”;
setContentType(“text/html”);
htmlPane.setText(说明);
System.out.println(htmlPane.getText());
JFrame=新JFrame(“测试”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(新的BorderLayout());
frame.add(新的JScrollPane(htmlPane));
frame.pack();
frame.setLocationRelativeTo(空);
frame.setVisible(true);
}
});
}
}

经过一点测试,我发现

  • HTML必须在
    JEditorPane
    接受它之前形成良好的格式,事实上,它似乎自己进行了一些验证,删除了无效的标记……有趣的东西
  • 我必须将表行和单元格
    包含到表中
  • 如果HTTP头没有合适的头,某些站点可能会主动阻止图像的下载,这意味着您示例中的图像在
    JEditorPane
    中反复下载失败,即使相同的HTML会在浏览器中加载图像(如Chrome)
  • 有时,在HTML中添加额外的内容以确保它呈现的是您所想的内容是很有帮助的,例如,我只需添加一些文本,将表格边框设置为
    1
    ,并向图像添加
    alt
    标记,这有助于验证某些元素实际呈现的位置

导入java.awt.BorderLayout;
导入java.awt.EventQueue;
导入javax.swing.JEditorPane;
导入javax.swing.JFrame;
导入javax.swing.JScrollPane;
导入javax.swing.UIManager;
导入javax.swing.UnsupportedLookAndFeelException;
公共级二托烷{
公共静态void main(字符串[]args){
新的TestEditorPane();
}
公共试验品二托烷(){
invokeLater(新的Runnable(){
@凌驾
公开募捐{
试一试{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch(ClassNotFoundException |实例化Exception | IllegalacessException |不支持ookandfeelException ex){
}
JEditorPane htmlPane=新的JEditorPane();
String description=“Hello”;
setContentType(“text/html”);
htmlPane.setText(说明);
System.out.println(htmlPane.getText());
JFrame=新JFrame(“测试”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(新的BorderLayout());
frame.add(新的JScrollPane(htmlPane));
frame.pack();
frame.setLocationRelativeTo(空);
frame.setVisible(true);
}
});
}
}

注意两件事,第一,你的例子不会编译,第二,你的HTML格式不正确,它应该以
为前缀,以
为后缀,更不用说你的HTML
没有行或单元格…@MadProgrammer它确实编译了,因为我已经运行了它。即使我删除了表格,只保留了图像,HTML仍然没有被设置。我在原始帖子中还提到,我已经尝试在字符串的开头和结尾添加and,这应该意味着我已经尝试过了,等等(修复了我的原始帖子,我没有在代码whi中包装“”
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class TestEditorPane {

    public static void main(String[] args) {
        new TestEditorPane();
    }

    public TestEditorPane() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                JEditorPane htmlPane = new JEditorPane();
                String description = "<html><body>Hello<table border=1><tr><td><img alt='Bad' src='http://fc07.deviantart.net/fs70/i/2012/084/c/0/angry_wet_ponies_are_angry____by_tabby444-d4tyfsc.png'/></tr></td></table></body></html>";
                htmlPane.setContentType("text/html");
                htmlPane.setText(description);
                System.out.println(htmlPane.getText());

                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new BorderLayout());
                frame.add(new JScrollPane(htmlPane));
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

}