首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在java中用源码显示html页面?

如何在java中用源码显示html页面?
EN

Stack Overflow用户
提问于 2018-08-05 00:14:18
回答 3查看 2.4K关注 0票数 0

我有一个PageRead类和方法,将从一个给定的网址下载html源代码。

代码语言:javascript
复制
public class PageRead {
public static StringBuilder readPage(String pageAddr) {
try {
URL url = new URL(pageAddr);
BufferedReader reader = new BufferedReader(new 
InputStreamReader(url.openStream()));

String line;
StringBuilder sb=new StringBuilder();
while ((line = reader.readLine()) != null) {
sb.append(line+"\n");
}
reader.close();
return sb;            
} 

catch (MalformedURLException e) {
e.printStackTrace();
return new StringBuilder("");
}  

catch (IOException e) {
e.printStackTrace();
return new StringBuilder("");
}
}

public static void main(String arg[]){
System.out.println(readPage("http://www.google.com"));
}
}

这将以字符串形式返回源代码,如下所示:

代码语言:javascript
复制
<!doctype html>.......</body></html>

有没有办法用这个源代码在类似于JFrame的格式中显示这个html?

EN

回答 3

Stack Overflow用户

发布于 2018-08-05 04:29:43

您可以将源代码编写到一个文件中,例如:File file = new File("index.html");,然后使用默认浏览器打开该文件。页面打开可以使用https://docs.oracle.com/javase/7/docs/api/java/awt/Desktop.html完成。

代码语言:javascript
复制
try {
    Files.write(file.toPath(), content.getBytes());
    Desktop.getDesktop().browse(file.toURI());
} catch (IOException e) {
  // TODO Auto-generated catch block
}

如果这就是你的想法:D

票数 1
EN

Stack Overflow用户

发布于 2018-08-05 05:13:40

如果这是问题所在,您可以在Java中拥有一个简单的浏览器。在Java6之前有一个JWebPane,现在有了一个基于WebKit的引擎作为JavaFX的一部分:

代码语言:javascript
复制
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;

public class BrowserTest extends Application {
    @Override
    public void start(Stage stage) throws Exception {
        StackPane root = new StackPane();

        WebView view = new WebView();
        WebEngine engine = view.getEngine();
        engine.load("http://www.google.com");
        root.getChildren().add(view);

        Scene scene = new Scene(root, 800, 600);
        stage.setScene(scene);
        stage.show();
    }

    public static void main(String[] args) throws Exception {
        Application.launch(args);
    }
}

示例取自GitHub用户skrb的gist

我检查过的一件事是,WebEngine还具有loadContent()方法,您可以直接将HTML内容作为String提供给它,这样您就可以编写

代码语言:javascript
复制
engine.loadContent(readPage("http://www.google.com").toString());

代替当前的load()调用(接受一个网址),只需准备好下载的HTML代码并不是网页所需的一切。

票数 1
EN

Stack Overflow用户

发布于 2018-08-05 15:25:18

用户可以在Swing的JEditorPane中打开html页面或内容。JEditorPane具有各种构造函数,包括:

代码语言:javascript
复制
JEditorPane(URL initialPage)
JEditorPane(String type, String text) // where type can be a MIME type: text/html

这可以与简单的html内容一起使用;限制是仅支持的html版本是3.2。或者,Swing应用程序可以使用JavaFXJFrame中打开JFXPanelWebView

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51687423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档