【发布时间】:2017-05-20 04:16:09
【问题描述】:
H: 下给出了现有的 HTML 元素:
https://developer.mozilla.org/de/docs/Web/API
此处显示了可用的 JAVA API 类:
https://xerces.apache.org/xerces2-j/javadocs/api/org/w3c/dom/Element.html
不幸的是,org.w3c.dom 包遗漏了一些更具体的元素,例如 HTMLCanvasElement。
我正在寻找一些更高级的 Java API,至少支持 HTMLCanvasElements(完整的 WEP API 支持会很棒)。
到目前为止我发现了什么:
A.对于javafx-d3 项目,我使用JavaFx WebView 来控制Java 中的一些JavaScript。 Java 和 JavaScript 之间的通信是基于 netscape.javascript.JSObject 的,原则上可以正常工作:
我能够将我从 JavaScript 世界获得的 JSObject 转换为 org.w3c.dom.Element ... 并使用它的 Java 方法来操作 DOM。
如果我想“更深入”,例如控制一个 HTMLCanvasElement,我必须基于 JSObject 编写自己的包装器。这是可能的,但感觉就像在重新发明轮子。
B. Google GWT 似乎提供了一些包装类,例如
com.google.gwt.dom.client.CanvasElement 为HTMLCanvasElement
但是我没有设法将 netscape.javascript.JSObject 转换为 GWT 包装类(从 com.google.gwt.core.client.JavaScriptObject 开始)。
如果可能的话,有人可以提供一个例子吗?
有人知道如何让下面的虚拟示例运行吗?
package main;
import elemental.client.Browser;
import elemental.html.AudioContext;
import elemental.html.AudioParam;
import elemental.html.Oscillator;
import elemental.html.Window;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Region;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
public class GwtElementDemo extends Application {
private Scene scene;
private Region browser;
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) {
//set state title
stage.setTitle("JavaFx demo");
browser = new Region();
Window window = Browser.getWindow();
AudioContext audioContext = window.newAudioContext();
Oscillator osc = audioContext.createOscillator();
osc.setType(Oscillator.SQUARE);
osc.connect((AudioParam) audioContext.getDestination(), 0);
osc.getFrequency().setValue(440.0f);
osc.noteOn(0);
//create the scene
scene = new Scene(browser, 750, 500, Color.web("#666970"));
stage.setScene(scene);
stage.show();
}
}
GWT elemental 的 maven 依赖项:
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-elemental</artifactId>
<version>2.8.0</version>
</dependency>
或者您知道用于 DOM 操作的替代/高级 JAVA API(即构建在 JSObject 层次结构上)?
【问题讨论】:
标签: javascript java api dom gwt