我想在我的应用程序中打开一个网址,而不是在浏览器中。我该怎么做?我想我需要一个 webview。我使用带有 jdk 6 的 netbeans 桌面应用程序
如果需要 javafx,我该如何使用它?请给一些教程?
为什么不使用JEditorPane
和。setContentType()
setText()
您可以设置内容类型,然后从 URL 响应中获取 HTML 并设置JEditorPane
文本:
editor.setContentType( "text/html" );
editor.setText( "<html><body>Hello, world</body></html>" );
更新:
这是一个小例子,虽然有一些小故障:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class JEditorPaneTest extends JPanel {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
final JFrame frame = new JFrame();
JEditorPane editor = new JEditorPane();
frame.getContentPane().add(editor);
editor.setContentType("text/html");
URL url = null;
try {
url = new URL("http://www.google.co.za");
} catch (MalformedURLException ex) {
Logger.getLogger(JEditorPaneTest.class.getName()).log(Level.SEVERE, null, ex);
}
BufferedReader in = null;
try {
in = new BufferedReader(new InputStreamReader(url.openStream()));
} catch (IOException ex) {
Logger.getLogger(JEditorPaneTest.class.getName()).log(Level.SEVERE, null, ex);
}
String inputLine;
StringBuffer response = new StringBuffer();
try {
while ((inputLine = in.readLine()) != null) {
response.append(inputLine).append("\n");
}
in.close();
} catch (IOException ex) {
Logger.getLogger(JEditorPaneTest.class.getName()).log(Level.SEVERE, null, ex);
}
// editor.setText("<html><body>Hello, world</body></html>");
editor.setText(response.toString());
editor.setEditable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}
你应该考虑 JavaFX,虽然这有WebView
你需要的东西:http: //docs.oracle.com/javafx/2/webview/WebViewSample.java.htm
在此处下载:http ://www.oracle.com/technetwork/java/javafx/downloads/index.html
要设置 Java FX 和 netbeans,请参见此处: http: //netbeans.org/kb/docs/java/javafx-setup.html
如果您尝试将应用程序作为模块嵌入到 NetBeans 平台中,或者您只是使用 NetBeans IDE 作为您的开发平台,我不太确定您的问题。所以这个答案提供了如何做到这两点的资源。
将 JavaFX WebView 嵌入为 NetBeans 模块
这是一个示例项目,它在 NetBeans 模块中嵌入了一个简单的基于 JavaFX WebView 的 html 浏览器。讨论该项目的博客条目在这里。
使用 WebView 的独立 JavaFX 程序
在 imageshack 链接处呈现页面的示例 JavaFX 程序是:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
public class GoogleSouthAfrica extends Application {
public static void main(String[] args) { launch(args); }
@Override public void start(Stage stage) {
WebView webview = new WebView();
webview.getEngine().load("http://www.google.co.za/");
stage.setScene(new Scene(webview, 750, 450));
stage.show();
}
}
示例程序的输出为:
以下是有关使用 NetBeans IDE将 HTML 内容添加到 JavaFX 应用程序的教程的链接。