【问题标题】:Cannot display web page on WebView control无法在 WebView 控件上显示网页
【发布时间】:2012-04-25 04:34:06
【问题描述】:

我尝试按照此处描述的说明进行操作:http://docs.oracle.com/javafx/2.0/webview/jfxpub-webview.htm 在 javafx 2.1 上显示网页,但网页不显示虽然我已经使用 javafx-ant 工具签署了我的应用程序(此链接提到签署 javafx应用程序How can I display a javascript webpage inside a WebView in JavaFx 2.0 in Browser)。

在浏览器上运行javafx时可以查看网页,但作为java独立应用程序运行时无法查看。

代码如下:

浏览器控制:

public class Browser extends Region {

    final WebView browser = new WebView();
    final WebEngine webEngine = browser.getEngine();

    public Browser() {
        //apply the styles
        getStyleClass().add("browser");
        // load the web page
        webEngine.load("http://www.google.com");
        //add the web view to the scene
        getChildren().add(browser);


    }
    //...
}

显示它:

  Stage stage = new Stage();

    stage.setTitle("Web View");
    Scene scene = new Scene(new Browser(),590,400, Color.web("#666970"));
    stage.setScene(scene);
    scene.getStylesheets().add("/com/sai/javafx/calendar/styles/BrowserToolbar.css");  

  stage.show();

任何想法都将受到高度赞赏。

【问题讨论】:

  • 我在此处标记了 javascript,因为我尝试使用 WebView 控件将 jQuery 集成到 JavaFX 2.0 应用程序中。
  • 您是否尝试过加载一个没有 css、javascript 并且可能来自本地文件系统的简单 html 文件?您的独立应用程序(即 jar 文件)是否在正确的位置包含所有资源?您是否尝试过在 Netbeans 中构建和运行您的应用程序? IDE 可能会给你一些线索。
  • 我可以从本地 html 文件加载网页,我使用 eclipse Helios 运行我的应用程序。

标签: javascript javafx-2


【解决方案1】:

这是一个示例应用程序:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.web.WebView;
import javafx.stage.Stage;

public class WebViewSample extends Application {
  public static void main(String[] args) { launch(args); }
  @Override public void start(final Stage primaryStage) {
    final WebView webView = new WebView(); 
    webView.getEngine().load("http://docs.oracle.com/javafx/");
    primaryStage.setScene(new Scene(webView));
    primaryStage.show();
  }
}

这是它在浏览器中的样子,内部滚动窗格是 JavaFX WebView 呈现的浏览器,外部文本是嵌入 JavaFX WebView 的 html 页面。

为了运行它,我使用了NetBeans nightly build、JavaFX 2.2b4、JDK7u6ea、Win7、IE9。

NetBeans 中的步骤是:

  1. 新项目 | JavaFX | JavaFX 应用程序
  2. 使用示例应用代码创建一个 Java 文件。
  3. 项目创建后,右键单击项目|特性
    • 构建 |部署 |勾选“请求无限制访问”
    • 运行 |检查收音机“在浏览器中运行”
    • 可以接受属性更改
  4. 按 F6 在浏览器中运行应用程序。
  5. 接受任何安全对话框警告。
  6. 等待几秒钟让 WebView 加载。

【讨论】:

  • 感谢您的帮助,也许我的问题没有包含足够的信息(我刚刚更新)。我在网络浏览器上运行时可以查看网页,但运行时无法查看网页应用程序作为 java 独立应用程序。此外,我使用 maven 构建和部署我的源代码,而不是使用 NetBean IDE。
  • 如果您运行我作为独立应用程序提供的示例应用程序,它会在您的系统上显示网页吗? (它在我的身上)。如果没有,您将需要提供更多环境详细信息和您的 Maven 脚本和/或更多代码以获得进一步的帮助。您无需签署独立应用程序 - 只需将应用程序部署在浏览器或 webstart 中。
  • 不幸的是,尽管使用了 Netbean IDE,但我无法运行 javafx 应用程序。我使用 javafx-ant 构建工具,所以结果应该与 NetBean IDE 相同(据我所知,NetBean IDE 也使用 javafx-ant 构建工具)
  • 您不需要 NetBeans 或 javafx-ant 构建工具来运行 JavaFX 应用程序。只需运行以下命令(针对您的 JavaFX sdk 的路径进行调整):javac -cp "\Program Files\Oracle\JavaFX 2.1 SDK\rt\lib\jfxrt.jar" WebViewSample.javajava -cp "\Program Files\Oracle\JavaFX 2.1 SDK\rt\lib\jfxrt.jar;." WebViewSample - 希望可行,否则我没有想法。
  • 是的,您完全可以将 javafx 应用程序作为独立应用程序编译和运行,但就我而言,我使用 javafx-ant 构建工具将我的应用程序编译并签名为 Web 启动应用程序。似乎当作为 java 独立应用程序运行时,有一些限制会阻止网页显示。我仍然无法独立运行 javafx 应用程序。仍在调查中。
【解决方案2】:

据我所知,解决我的问题的唯一方法是在本地加载.html文件(无法从其他域加载网页,并且该html文件不能引用任何外部链接)

public Browser() {
   //apply the styles
   getStyleClass().add("browser");        
   // load the web page
   final URL urlHello = Browser.class.getResource("sample.html");
   webEngine.load(urlHello.toExternalForm());
}

显示它:

Stage stage = new Stage();

stage.setTitle("Web View");
Scene scene = new Scene(new Browser(),590,400, Color.web("#666970"));
stage.setScene(scene);
scene.getStylesheets().add("/com/sai/javafx/calendar/styles/BrowserToolbar.css");  

stage.show();

【讨论】:

    猜你喜欢
    • 2013-11-05
    • 2012-08-28
    • 1970-01-01
    • 1970-01-01
    • 2013-07-10
    • 2015-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多