Les éléments HTML existants sont donnés ici sous H:API Java pour la manipulation d'éléments DOM html/Javascript dans une application de bureau?
https://developer.mozilla.org/de/docs/Web/API
Les classes disponibles API JAVA sont présentés ici:
https://xerces.apache.org/xerces2-j/javadocs/api/org/w3c/dom/Element.html
Malheureusement, le paquet org.w3c.dom manque un peu éléments plus spécifiques comme HTMLCanvasElement.
Je suis Je suis à la recherche d'une API Java plus avancée qui supporte au moins les HTMLCanvasElements (la prise en charge complète de l'API WEP serait excellente).
Ce que je trouve à ce jour:
A. Pour le projet javafx-d3-je utiliser la WebView JavaFX pour contrôler un peu de JavaScript en Java. La communication entre Java et JavaScript est basé sur netscape.javascript.JSObject et fonctionne très bien en principe:
Je suis en mesure de jeter un JSObject que je suis arrivé du monde JavaScript à un org.w3c.dom.Element ... et de l'utilisation ses méthodes Java pour manipuler le DOM.
Si je veux "aller plus loin", par ex. contrôle un HTMLCanvasElement, je dois écrire mes propres wrappers basés sur JSObject. C'est possible mais c'est comme réinventer la roue.
B. Google GWT semble fournir des classes wrapper, par exemple
com.google.gwt.dom.client.CanvasElement pour HTMLCanvasElement
Cependant, je n'a pas réussi à convertir netscape.javascript.JSObject aux classes d'emballage GWT (à partir de com.google.gwt.core.client.JavaScriptObject).
Si cela est possible, quelqu'un pourrait-il donner un exemple?
Quelqu'un sait comment faire fonctionner cet exemple factice?
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();
}
}
dépendance Maven pour élémentaire GWT:
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-elemental</artifactId>
<version>2.8.0</version>
</dependency>
Ou connaissez-vous une alternative/avancée API JAVA pour la manipulation DOM (qui est construit sur la hiérarchie JSObject)?
Merci pour la réponse détaillée. En utilisant vos jarres j'ai une application JavaFx en cours d'exécution qui est capable de contrôler le DOM avec l'API élémentaire gwt. win.alert ("Bonjour tout le monde"); travaille et je suis capable de récupérer la hauteur du document. window.newAudioContext() ne fonctionne pas ... ce qui peut être dû aux restrictions que vous avez mentionnées. – Stefan
J'ai également trouvé quelques problèmes de performances de WebView pour mon projet java-fx et d'autres informations sur ce sujet peuvent être trouvées ici: http: // stackoverflow.com/questions/10762979/performance-of-webview-in-javafx – Stefan
L'utilisation de JxBrowser commercial au lieu de WebView peut être une option. Il y a peut-être aussi d'autres alternatives. – Stefan