2012-04-25 77 views
1

我试图按照此处描述的说明: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)。无法在WebView控件上显示网页

我可以在浏览器上运行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(); 

任何想法,将高度赞赏。

+0

我标记的JavaScript在这里,因为我尝试使用WebView控件将jQuery集成到JavaFX 2.0的应用程序。 – Thinhbk 2012-04-26 03:33:30

+0

您是否试图加载一个简单的html文件,而不使用css,javascript以及可能来自本地文件系统?您的独立应用程序,即jar文件是否包含正确位置的所有资源?您是否尝试在Netbeans中构建并运行您的应用程序? IDE可能会给你一些线索。 – 2012-04-26 08:30:09

+0

我可以从本地html文件加载网页,我使用eclipse Helios来运行我的应用程序。 – Thinhbk 2012-04-26 08:58:26

回答

0

据我所知,解决我的问题是加载本地.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(); 
2

这里是一个示例应用程序:

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页面。

WebView in Browser Sample Image

要运行它,我用NetBeans nightly buildJavaFX 2.2b4JDK7u6ea,Win7的,IE9。

步骤在NetBeans是:

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

Tks为您提供帮助,也许我的问题没有包含足够的信息(我刚刚更新)。我可以在Web浏览器上运行时查看网页,但在运行应用程序时无法查看网页作为Java独立应用程序。 此外,我使用maven构建和部署我的源代码,而不使用NetBean IDE。 – Thinhbk 2012-04-25 06:06:31

+0

如果您运行我作为独立应用程序提供的示例应用程序,它会在您的系统上显示一个网页吗? (它在我的)。如果没有,你需要提供更多的环境细节和你的maven脚本和/或更多的代码来获得进一步的帮助。您无需签署独立的应用程序,只需要在浏览器或webstart中部署应用程序。 – jewelsea 2012-04-25 06:26:14

+0

不幸的是,尽管使用了Netbean IDE,我仍然无法运行javafx应用程序。 我使用javafx-ant构建工具,因此结果应该与NetBean IDE相同(据我所知,NetBean IDE也使用javafx-ant构建工具) – Thinhbk 2012-04-25 07:21:08