2015-06-16 27 views
0

我試圖在JAVAFX 8 webview中顯示聚合物材料設計元素,並在其中某些圖形上產生了一些故障。 例如,複選框元素在您點擊時會消失。JavaFX webview故障聚合物材質設計元素

我在Ubuntu 15.04系統上使用java 8 sdk update 45。

下面是代碼:

package sample; 

import javafx.application.Application; 
import javafx.fxml.FXMLLoader; 
import javafx.scene.Parent; 
import javafx.scene.Scene; 
import javafx.stage.Stage; 


import javafx.application.Application; 
import javafx.geometry.HPos; 
import javafx.geometry.VPos; 
import javafx.scene.Node; 
import javafx.scene.Scene; 
import javafx.scene.layout.HBox; 
import javafx.scene.layout.Priority; 
import javafx.scene.layout.Region; 
import javafx.scene.paint.Color; 
import javafx.scene.web.WebEngine; 
import javafx.scene.web.WebView; 
import javafx.stage.Stage; 
public class Main extends Application { 
    private Scene scene; 
    @Override public void start(Stage stage) { 
     // create the scene 
     stage.setTitle("Web View"); 
     scene = new Scene(new Browser(),750,500, Color.web("#666970")); 
     stage.setScene(scene); 

     stage.show(); 
    } 

    public static void main(String[] args){ 
     launch(args); 
    } 
} 

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.polymer-project.org/0.5/components/paper-elements/demo.html"); 
     //add the web view to the scene 
     getChildren().add(browser); 

    } 
    private Node createSpacer() { 
     Region spacer = new Region(); 
     HBox.setHgrow(spacer, Priority.ALWAYS); 
     return spacer; 
    } 

    @Override protected void layoutChildren() { 
     double w = getWidth(); 
     double h = getHeight(); 
     layoutInArea(browser,0,0,w,h,0, HPos.CENTER, VPos.CENTER); 
    } 

    @Override protected double computePrefWidth(double height) { 
     return 750; 
    } 

    @Override protected double computePrefHeight(double width) { 
     return 500; 
    } 
} 

這方面有任何想法? 我認爲jdk webview並沒有完全實現所有的HTML5規範。

回答

1

正常工作對我來說:

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

public class Polymer extends Application { 
    @Override public void start(Stage stage) { 
     WebView webView = new WebView(); 
     webView.getEngine().load(
      "http://www.polymer-project.org/0.5/components/paper-elements/demo.html" 
     ); 

     System.getProperties().list(System.out); 

     stage.setScene(new Scene(webView)); 
     stage.show(); 
    } 

    public static void main(String[] args){ 
     launch(args); 
    } 
} 

$ java -version 
java version "1.8.0_60-ea" 
Java(TM) SE Runtime Environment (build 1.8.0_60-ea-b13) 
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b12, mixed mode) 

OS X 10.9.5


頁面本身是緩慢的最初顯示,但隨後在同一個頁面很慢以在Safari上顯示(需要幾秒鐘才能顯示)。

Polymer Image

+0

嗨,謝謝你的回答。我嘗試了更新版本的jdk(和你的1.8u60一樣),看起來複選框已經修復。但是,如果你點擊菜單,並嘗試下拉列表或切換按鈕的例子,你會看到仍然有很多渲染錯誤:(。下拉列表甚至不能在我的Linux機器上使用。 – aacebedo

+0

切換按鈕也適用於我(與Safari完全一樣)。下拉菜單不起作用 - 在http://bugreport.java.com上記錄一個錯誤報告。 – jewelsea