Java代码
- import javafx.application.Application;
- import javafx.beans.value.ChangeListener;
- import javafx.beans.value.ObservableValue;
- import javafx.concurrent.Worker;
- import javafx.concurrent.Worker.State;
- import javafx.scene.Group;
- import javafx.scene.Scene;
- import javafx.scene.control.ScrollPane;
- import javafx.scene.web.WebEngine;
- import javafx.scene.web.WebView;
- import javafx.stage.Stage;
- //www.qingmiaokeji.cn
- public class FXBower extends Application {
- @Override
- public void start(final Stage stage) {
- stage.setWidth(1000);
- stage.setHeight(800);
- Scene scene = new Scene(new Group());
- stage.setMaximized(true);
- final WebView browser = new WebView();
- final WebEngine webEngine = browser.getEngine();
- ScrollPane scrollPane = new ScrollPane();
- scrollPane.setContent(browser);
- scrollPane.setFitToHeight(true);
- scrollPane.setFitToWidth(true);
- webEngine.getLoadWorker().stateProperty()
- .addListener(new ChangeListener<State>() {
- @Override
- public void changed(ObservableValue ov, State oldState, State newState) {
- if (newState == Worker.State.SUCCEEDED) {
- stage.setTitle(webEngine.getLocation());
- }
- }
- });
- webEngine.load("http://127.0.0.1:9099/jd/inet/web_resources/src/index.html");
- scene.setRoot(scrollPane);
- stage.setScene(scene);
- stage.show();
- }
- public static void main(String[] args) {
- launch(args);
- }
- }
复制代码
HTML
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="utf-8" />
- <meta http-equiv="X-UA-Compatible" content="IE=edge" />
- <title>ActiveReportsJS sample</title>
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <script src="https://cdn.grapecity.com/activereportsjs/2.0.0/dist/ar-js-core.js"></script>
- <script src="https://cdn.grapecity.com/activereportsjs/2.0.0/dist/ar-js-designer.js"></script>
- <script src="https://cdn.grapecity.com/activereportsjs/3.0.0/dist/locales/designer/zh-locale.js"></script>
- <script src="$DEMOROOT$/lib/purejs/license.js"></script>
- <link
-
- rel="stylesheet"
- />
- <link
- rel="stylesheet"
-
- integrity="sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z"
- crossorigin="anonymous"
- />
- <link
- rel="stylesheet"
- type="text/css"
-
- />
- <link
- rel="stylesheet"
- type="text/css"
-
- />
- <style>
- #designer-host {
- margin: 0 auto;
- width: 100%;
- height: 550px;
- }
- </style>
- </head>
- <body>
- <div id="designer-host"></div>
- <script>
- var reportTemplates = GC.ActiveReports.ReportDesigner.templates;
- var resolveFunc = null;
- var designer = new GC.ActiveReports.ReportDesigner.Designer(
- "#designer-host",
- { language: "zh" }
- );
- var counter = 0;
- reportStorage = new Map();
- function fillReportList() {
- $("#listReports").empty();
- let reportIds = reportStorage.keys();
- let result = reportIds.next();
- while (!result.done) {
- const reportId = result.value;
- const openReportBtn = $(
- '<button type="button" class="list-group-item list-group-item-action">' +
- reportId +
- "</button>"
- );
- openReportBtn.on("click", function () {
- onSelectReport(reportId);
- });
- $("#listReports").append(openReportBtn);
- result = reportIds.next();
- }
- }
- designer.setActionHandlers({
- onCreate: function () {
- const reportId = `NewReport${++this.counter}`;
- return Promise.resolve({
- definition: reportTemplates.CPL,
- id: reportId,
- displayName: reportId,
- });
- },
- onOpen: function () {
- const ret = new Promise(function (resolve) {
- resolveFunc = resolve;
- fillReportList();
- $("#dlgOpen").modal("show");
- });
- return ret;
- },
- onSave: function (info) {
- const reportId = info.id || `NewReport${++this.counter}`;
- reportStorage.set(reportId, info.definition);
- return Promise.resolve({ displayName: reportId });
- },
- onSaveAs: function (info) {
- const reportId = `NewReport${++this.counter}`;
- reportStorage.set(reportId, info.definition);
- return Promise.resolve({ id: reportId, displayName: reportId });
- },
- });
- function onSelectReport(reportId) {
- if (resolveFunc) {
- $("#dlgOpen").modal("hide");
- resolveFunc({
- definition: reportStorage.get(reportId),
- id: reportId,
- displayName: reportId,
- });
- resolveFunc = null;
- }
- }
- </script>
- <script
- src="https://code.jquery.com/jquery-3.5.1.slim.min.js"
- integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj"
- crossorigin="anonymous"
- ></script>
- <script
- src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"
- integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN"
- crossorigin="anonymous"
- ></script>
- <script
- src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"
- integrity="sha384-B4gt1jrGC7Jh4AgTPSdUtOBvfO8shuf57BaghqFfPlYxofvL8/KUEfYiJOMMV+rV"
- crossorigin="anonymous"
- ></script>
- <div class="modal" id="dlgOpen" tabindex="-1" aria-hidden="true">
- <div class="modal-dialog">
- <div class="modal-content">
- <div class="modal-header">
- <h5 class="modal-title" id="exampleModalLabel">打开报表</h5>
- <button
- type="button"
- class="close"
- data-dismiss="modal"
- aria-label="Close"
- >
- <span aria-hidden="true">×</span>
- </button>
- </div>
- <div class="modal-body">
- <h2>请选择报表:</h2>
- <div class="list-group" id="listReports"></div>
- </div>
- <div class="modal-footer">
- <button
- type="button"
- class="btn btn-secondary"
- data-dismiss="modal"
- >
- 关闭
- </button>
- </div>
- </div>
- </div>
- </div>
- </body>
- </html>
复制代码 |