Intenté mostrar elementos de diseño de material polimérico dentro de una vista web de JAVAFX 8 y obtuve algunos fallos gráficos en algunos de ellos. Por ejemplo, el elemento de casilla de verificación desaparece al hacer clic en él.
Estoy usando la actualización 45 de sdk de java 8 en un sistema Ubuntu 15.04.
Aquí está el código:
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;
}
}
¿Alguna idea sobre esto? Creo que la vista web jdk no implementa completamente todas las especificaciones HTML5.
Respuestas
1 para la respuesta № 1Funciona bien para mí:
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
La página en sí misma tarda en mostrarse inicialmente, pero la misma página también se muestra en Safari (tarda unos segundos en aparecer).