【问题标题】:JavaFX webview glitches on Polymer material design elements聚合物材料设计元素上的 JavaFX webview 故障
【发布时间】:2015-06-16 19:07:45
【问题描述】:

我尝试在 JAVAFX 8 网络视图中显示聚合物材料设计元素,但其中一些出现了图形故障。 例如,当您单击复选框元素时,它会消失。

我在 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 规范。

【问题讨论】:

    标签: java javafx polymer material-design


    【解决方案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 上显示也很慢(需要几秒钟才能显示)。

    【讨论】:

    • 您好,谢谢您的回答。我尝试使用 jdk 的更新版本(与您的 1.8u60 相同),似乎复选框已修复。但是,如果您单击菜单并尝试下拉列表或切换按钮示例,您会发现仍然存在很多渲染错误:(。下拉菜单在我的 linux 机器上甚至不可用。
    • 切换按钮对我来说也很好用(与 Safari 完全相同)。下拉菜单不起作用 - 在 bugreport.java.com 记录错误报告
    猜你喜欢
    • 1970-01-01
    • 2016-04-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-21
    相关资源
    最近更新 更多