【发布时间】:2016-04-21 01:02:54
【问题描述】:
我正在开发一个 JavaFX 项目,其中有一堆静态 HTML&JS 页面,我正在加载 index.html,用户可以查看并点击链接等。
现在,通常当我们使用Firefox 或Chromium 之类的浏览器时,调用打印命令执行打印任务。
但是,webview 中发生的事情并不相同。如何在 JavaFX 的网页渲染机制中启用打印。
也可以通过某种方式调用打印函数并通过 JavaScript 将网页或 webview 传递给它。
到目前为止,这是我的代码:
public class Main extends Application {
private Scene scene;
MyBrowser myBrowser;
@Override
public void start(Stage primaryStage) throws Exception{
primaryStage.setTitle("Test web");
Screen screen = Screen.getPrimary();
myBrowser = new MyBrowser();
scene = new Scene(myBrowser, 1080, 1920);
myBrowser.setPrefSize(1080, 1920);
Rectangle2D bounds = screen.getVisualBounds();
primaryStage.setX(bounds.getMinX());
primaryStage.setY(bounds.getMinY());
scene.setRoot(myBrowser);
primaryStage.setScene(scene);
primaryStage.setMaximized(false);
primaryStage.setFullScreen(true);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
class MyBrowser extends Region {
final String hellohtml = "hello.html";
WebView webView = new WebView();
WebEngine webEngine = webView.getEngine();
public MyBrowser(){
URL urlHello = getClass().getResource("hello.html");
webEngine.load(urlHello.toExternalForm());
webView.setPrefSize(1080, 1920);
webView.getChildrenUnmodifiable().addListener(new ListChangeListener<Node>() {
@Override public void onChanged(Change<? extends Node> change) {
Set<Node> deadSeaScrolls = webView.lookupAll(".scroll-bar");
for (Node scroll : deadSeaScrolls) {
scroll.setVisible(true);
}
}
});
getChildren().add(webView);
}
}
任何建议或指针都会很好。谢谢.. :-)
【问题讨论】:
-
@hotzst :该应用程序处于全屏状态,我无法添加额外的按钮。也可以通过某种方式调用打印函数并将其传递给 JavaScript 的网页或 webview。
-
@hotzst:有什么想法吗?
-
在示例中,按钮用于触发打印,该功能基本上可以附加到任何事件。可能会添加上下文菜单或在页面完成加载时自动触发。
-
@hotzst 我想通过 Javascript 附加它,老实说我既不是 Javfx 也不是 JS 开发人员。你能帮我解决这个问题吗?谢谢你..
标签: javascript java printing javafx webview