浏览器使用JEditorPane强制蓝色背景

时间:2014-03-22 16:00:32

标签: java swing url colors jeditorpane

这是我用来在JEditorPane中显示谷歌的代码

String url="http://google.com";    
editorPane.setEditable(false);
    try {
        editorPane.setPage(url);
    } catch (IOException e) {}

但由于某种原因,背景总是蓝色,如果我打电话不重要

setBackgroundColor(Color.WHITE);

4 个答案:

答案 0 :(得分:7)

正如@AndrewThompson在评论JEditorPane中所指出的那样,它只支持HTML 3.2和CSS1的一个子集,并不能真正呈现任何现代网页。

我强烈建议使用替代方案,例如:

  • <强> JavaFX WebView

    代码片段:(没有依赖关系,你可以按原样运行)

    import javafx.application.Platform;
    import javafx.embed.swing.JFXPanel;
    import javafx.scene.Scene;
    import javafx.scene.web.WebEngine;
    import javafx.scene.web.WebView;
    
    import javax.swing.*;
    import java.awt.*;
    
    public class JavaFxBrowser implements Runnable {
        private WebEngine webEngine;
    
        public static void main(String[] args) {
            SwingUtilities.invokeLater(new JavaFxBrowser());
        }
    
        public void loadURL(final String url) {
            Platform.runLater(() -> {
                webEngine.load(url);
            });
        }
    
        @Override
        public void run() {
            // setup UI
            JFrame frame = new JFrame();
            frame.setVisible(true);
            frame.setPreferredSize(new Dimension(1024, 600));
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
            JFXPanel jfxPanel = new JFXPanel();
            frame.getContentPane().add(jfxPanel);
            frame.pack();
    
            Platform.runLater(() -> {
                WebView view = new WebView();
                webEngine = view.getEngine();
    
                jfxPanel.setScene(new Scene(view));
            });
    
            loadURL("http://www.google.com");
        }
    }
    
  • <强> Flying Saucer

    代码示例:

    XHTMLPanel panel = new XHTMLPanel();
    panel.setDocument("http://www.google.com");
    

    @see BrowsePanel.java

  • NativeSwing

    代码段:

    final JWebBrowser webBrowser = new JWebBrowser();
    webBrowser.navigate("http://www.google.com");
    

    @see SimpleWebBrowserExample.java

答案 1 :(得分:1)

可能的原因是HTMLDocument解析三位数颜色代码与正常颜色代码不同。因此,所有内容都显示为蓝色,因为只设置了蓝色字节(以及绿色字节的最低4位)。

例如:#000FFF将被解释为Create Function dbo.[getFirstTenCharacters] ( @String Varchar(Max) ) RETURNS Varchar(Max) BEGIN Declare @Xml Xml Declare @firsttenletter Varchar(Max) Declare @delimiter Varchar(5) SET @delimiter=' ' SET @Xml = cast(('<a>'+replace(@String,@delimiter,'</a><a>')+'</a>') AS XML) ;With CTE AS (SELECT A.value('.', 'varchar(max)') as [Column] FROM @Xml.nodes('a') AS FN(a) ) SELECT @firsttenletter =Stuff((SELECT ' ' + LEFT([Column],10) FROM CTE FOR XML PATH('') ),1,0,'') RETURN (@firsttenletter) END GO SELECT dbo.[getFirstTenCharacters]('Administration Duplication'); ,它是尖锐的蓝色。

至少这解决了我在评论中提到的问题。背景中相关主题的可能原因也是如此。

答案 2 :(得分:1)

您的班级似乎已经扩展了JFrame。所以请使用editorPane对象设置颜色如下

String url="http://google.com";    
editorPane.setEditable(false);
editorPane.setBackground(Color.WHITE);
    try {
        editorPane.setPage(url);
    } ca

答案 3 :(得分:0)

我曾经尝试使用JEditorPane大约JDK1.3并且支持非常有限。据我所知,该API在提供浏览支持方面没有太大进步。

我建议您结帐DJ here。易于设置和可靠使用。