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

如何使用源代码在java中显示html页面?,java,html,Java,Html,我有一个PageRead类和方法,可以从给定的url下载html源代码 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;

我有一个PageRead类和方法,可以从给定的url下载html源代码

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"));
}
}
这将以字符串形式返回源代码,如下所示:

<!doctype html>.......</body></html>
。。。。。。。

有没有一种方法可以使用此源代码以类似JFrame的方式显示此html?

您可以将源代码写入文件,例如:
file file=new file(“index.html”)

如果这就是您的想法:D

您可以将源代码写入文件,类似于:
file file file=new file(“index.html”)

如果这就是您的想法:D

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

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的一个示例。
我检查过的一件事是,它还有一个方法,您可以直接将
HTML
内容作为
String
提供给它,这样您就可以编写

engine.loadContent(readPage("http://www.google.com").toString());

要取代当前的
load()
调用(它需要一个URL),只需准备好下载的
HTML
代码并不是网页所需的一切。

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

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的一个示例。
我检查过的一件事是,它还有一个方法,您可以直接将
HTML
内容作为
String
提供给它,这样您就可以编写

engine.loadContent(readPage("http://www.google.com").toString());

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

可以在Swing的
窗口中打开HTML页面或内容
JEditorPane
具有各种构造函数,包括:

JEditorPane(URL initialPage)
JEditorPane(String type, String text) // where type can be a MIME type: text/html

这可以用于简单的html内容;限制是仅支持3.2版的html版本。可选地,Swing应用程序可以使用
JFXPanel
JFrame
中打开
JavaFX
WebView
,您可以在Swing的
JEditorPane
中打开html页面或内容
JEditorPane
具有各种构造函数,包括:

JEditorPane(URL initialPage)
JEditorPane(String type, String text) // where type can be a MIME type: text/html

这可以用于简单的html内容;限制是仅支持3.2版的html版本。或者,Swing应用程序可以使用
JFXPanel

JFrame
中打开
JavaFX
WebView
,Swing组件对html有非常基本的支持,您可以切换到JavaFX的Swing组件对html有非常基本的支持,你可以切换到JavaFx的hi,我已经尝试了你的代码,它会工作的!但是我在java程序中添加了一个JFrame类,我想在JFrame中调用这个ShowBrowser方法,有可能吗?现在我不能在JFrame中使用上述代码,因为JFrame扩展了JFrame类,并且不允许我再扩展应用程序类@JasonWEI我没有试过,但我想你需要这个教程:嗨,我试过你的代码,它会工作的!但是我在java程序中添加了一个JFrame类,我想在JFrame中调用这个ShowBrowser方法,有可能吗?现在我不能在JFrame中使用上述代码,因为JFrame扩展了JFrame类,并且不允许我再扩展应用程序类@JasonWEI我没有尝试过,但我认为您需要本教程: