我正在尝试将CSS文件应用于JavaFX WebView对象.从我读过的内容来看,这应该可以解决问题,但显然我错过了一些东西,因为WebView显示没有任何样式.
package net.snortum.play; import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.layout.VBox; import javafx.scene.web.WebEngine; import javafx.scene.web.WebView; import javafx.stage.Stage; public class WebviewCssPlay extends Application { @Override public void start(Stage stage) { stage.setTitle("CSS Styling Test"); stage.setWidth(300); stage.setHeight(200); WebView browser = new WebView(); WebEngine webEngine = browser.getEngine(); webEngine.loadContent("<html><body><h1>Hello!</h1>This is a <b>test</b></body></html>"); VBox root = new VBox(); root.getChildren().addAll(browser); root.getStyleClass().add("browser"); Scene scene = new Scene(root); stage.setScene(scene); scene.getStylesheets().add("/net/snortum/play/web_view.css"); stage.show(); } public static void main(String[] args) { launch(args); } }
我的CSS文件如下所示:
.browser { -fx-background-color: #00ff80; -fx-font-family: Arial,Helvetica,san-serif; }
解决方法
James_D already explained in his answer如何将“JavaFx CSS”转换为“HTML CSS”,但使用
WebEngine.setUserStylesheetLocation
设置包含CSS的样式表可能更方便:
webEngine.setUserStyleSheetLocation(getClass().getResource("style.css").toString());
style.css包含css代码:
body { background-color: #00ff80; font-family: Arial,sans-serif; }