Существующие HTML элементы приведены здесь под H:API-интерфейс Java для управления элементами DOM html/Javascript в настольном приложении?
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 я использую WebView JavaFX для управления некоторыми JavaScript в Java. Связь между Java и JavaScript основана на netscape.javascript.JSObject и отлично работает в принципе:
Я могу бросить JSObject, что я получил от мира JavaScript к 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();
}
}
Maven зависимостей для GWT элементного:
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-elemental</artifactId>
<version>2.8.0</version>
</dependency>
Или вы знаете, альтернативный/расширенный JAVA API для манипулирования DOM (то есть построить на иерархии JSObject)?
Спасибо за подробный ответ. Используя ваши банки, я получил приложение JavaFx, которое может управлять DOM с помощью gwt elemental api. win.alert («Hello World»); работает, и я могу получить высоту документа. window.newAudioContext() не работает ... что может быть связано с ограничениями, которые вы упомянули. – Stefan
Я также нашел некоторые проблемы с производительностью WebView для моего проекта java-fx, и дополнительную информацию по этой теме можно найти здесь: http: // stackoverflow.com/questions/10762979/performance-of-webview-in-javafx – Stefan
Использование коммерческого JxBrowser вместо WebView может быть вариантом. Возможно, есть и другие альтернативы. – Stefan