我有一个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?
答案 0 :(得分:1)
您可以将源代码写入文件,例如:File file = new File("index.html");
,然后使用默认浏览器打开该文件。可以使用https://docs.oracle.com/javase/7/docs/api/java/awt/Desktop.html完成页面打开。
try {
Files.write(file.toPath(), content.getBytes());
Desktop.getDesktop().browse(file.toURI());
} catch (IOException e) {
// TODO Auto-generated catch block
}
如果这就是您想要的:D
答案 1 :(得分:1)
如果是这样,您可以使用Java使用简单的浏览器。在Java6之前有JWebPane
,现在在JavaFX中有一个基于WebKit的引擎:
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
馈入它,以便您可以编写
engine.loadContent(readPage("http://www.google.com").toString());
代替当前的load()
调用(使用URL),只需准备好下载的HTML
代码不是网页所需的一切。
答案 2 :(得分:0)
一个人可以在Swing的JEditorPane
中打开一个html页面或内容。 JEditorPane
具有各种构造函数,包括:
JEditorPane(URL initialPage)
JEditorPane(String type, String text) // where type can be a MIME type: text/html
这可以与简单的html内容一起使用;限制是所支持的html版本仅为3.2。 (可选)Swing应用程序可以使用JavaFX
在WebView
中打开JFrame
的{{1}}。