在java jeditorPane中显示网页

时间:2014-04-10 17:11:32

标签: java html swing webpage jeditorpane

我想使用JeditorPane在Jframe上用Java显示网页 我用过的代码:

 edPane.setContentType("text/html"); 
    String data="<html>\n" + "<head>\n" + "<script type=\"text/javascript\" src=\"http://maps.google.com/maps/api/js?sensor=false\"></script>\n" + 
    "<script type=\"text/javascript\">\n" + "  function initialize() \n" + "  {\n" + "              \n" + "    
var map = new google.maps.Map(document.getElementById(\"map_canvas\"), myOptions);\n" + "</script>\n" + "</head>\n" + "<body onload=\"initialize()\">\n" + 
"  <div id=\"map_canvas\" style=\"width:100%; height:100%\"></div>\n" + "</body>\n" + "</html>";         edPane.setText(data);

Ouutput: 它在UI中没有显示任何内容.. 我想显示网页... 请帮忙

6 个答案:

答案 0 :(得分:5)

问题是JEditorPane没有Javascript或HTML5(画布)支持,所以你应该使用另一个容器。 有一个类似的问题here,其中解决方案正在转向JavaFX。

答案 1 :(得分:2)

查看The DJ Project

它是开源的,并在LGPL下发布。

JWebBrowser还提供执行javascript代码的功能。示例代码如下:

private static final String LS = System.getProperty("line.separator");

JWebBrowser webBrowser = new JWebBrowser();
webBrowser.setBarsVisible(false);
webBrowser.setStatusBarVisible(true);
final String htmlContent =
  "<html>" + LS +
  "  <body>" + LS +
  "    <h1>Some header</h1>" + LS +
  "    <p>A paragraph with a <a href=\"http://www.google.com\">link</a>.</p>" + LS +
  "  </body>" + LS +
  "</html>";
webBrowser.setHTMLContent(htmlContent);

// [...] Add webBrowser to a container
webBrowser.executeJavascript("document.bgColor = '#FFFF00';");

请参阅项目页面了解更多样本。

答案 2 :(得分:0)

如果我理解正确,您希望HTML显示JEditorPane。一种方法是创建HTML页面。您有两个选择:

  1. 将您的HTML文件放在 DropBox Google云端硬盘这样的影响力上。
  2. 在文件中将其置于本地。

        JEditorPane editorPane_WEB = new JEditorPane();
        editorPane_WEB.setEditable(false); //OPTIONAL
        editorPane_WEB.setBorder(null); //OPTIONAL
        try {
            editorPane_WEB.setPage("http://---------------.com/--.html"); //Or Path/File destination
        } catch (IOException error) {/*ERROR*/}   
    
        JScrollPane scrollPane_WEB = new JScrollPane(editorPane_WEB);
        scrollPane_WEB.setBounds(67, 27, 798, 465); // Don't use null layout.
        scrollPane_WEB.getVerticalScrollBar().setUnitIncrement(10);
    
        add(scrollPane_WEB); //class extends JFrame/JPanel
    
  3. 如果这不是你的问题,请不要贬低,只需在下面发表评论!

答案 3 :(得分:0)

我建议嵌入JavaFX WebView,而不是使用像DJ Project这样的本机库。看看我的回答here。在平台独立性方面,我还提到了我对dj项目的一些问题。

答案 4 :(得分:0)

使用JEditorPane显示网页:

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

public class GoogleHomePage {

  public static void main(String[] args) {

     JEditorPane jep = new JEditorPane();
     jep.setEditable(false);   

     try {
       jep.setPage("http://www.google.com");
     }
     catch (IOException e) {
       jep.setContentType("text/html");
       jep.setText("<html>Could not load http://www.google.com </html>");
     } 

     JScrollPane scrollPane = new JScrollPane(jep);     
     JFrame f = new JFrame("O'Reilly & Associates");
     // Next line requires Java 1.3
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     f.getContentPane().add(scrollPane);
     f.setSize(512, 342);
     f.show();

  }

}

答案 5 :(得分:0)

有一种非常简单的方法可以在 Windows 上的 JEditorPane 中显示存储在本地磁盘中的页面

  1. 在 IIS 中创建网站
  2. 网站应该有与页面相关联的文件夹。
  3. 将网址放入 JEditorPane 的 setPage() 函数中

大功告成。

这种方法的好处是您可以将页面与应用程序分开,并保护它们免受应用程序的写入更改。

通常你不能将网页的相对地址或没有协议的地址放入 setPage() 函数中。我提到的上述方法为您提供了相对地址和协议的好处。

享受。