Frage

Ich möchte ein paar wirklich einfache Overlay-Klassen in GWT, um einige SVG Sachen zu wickeln. Ich würde wie im Grunde ein Rechteck gezeichnet werden, das ist, wie ich es in Javascript tun:

var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
svg.setAttribute('width', '100%');
svg.setAttribute('height', '100%');
document.body.appendChild(svg);

var rect = document.createElementNS('http://www.w3.org/2000/svg','rect');
rect.setAttribute("width","300");
rect.setAttribute("height","100");
svg.appendChild(rect);

und jetzt ich habe Probleme übersetzen, dass GWT. Ich hatte gehofft, ich um all diese Anrufe, so etwas wie dies eine wirklich dünne Auflage tun könnte:

public class SVGPanel extends JavaScriptObject {
    protected SVGPanel() {}

    public static native SVGPanel create(String width, String height) /*-{
        var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
        svg.setAttribute('width', width);
        svg.setAttribute('height', height);
        return svg;
    }-*/;
}

public MyProject implements EntryPoint {

    public void onModuleLoad() { 
        SVGPanel panel = SVGPanel.create("100%", "100%");
        Document.get().getBody().appendChild(panel);
    }
}

Ja, aber ich habe nicht ein Verständnis darüber, wie wir aus der JavaScript-Darstellung der SVG Sachen GWT Java-Klassen springen. Zum einen erstreckt sich die SVGPanel Klasse JavaScriptObject, aber ich kann es auf den Textbereich des Dokuments Klasse nicht einfach hinzugefügt werden, da es einen Elementtyp ist zu erwarten. Wenn jemand könnte nur den richtigen Weg weist darauf hin, dass die Brücke zu tun, soll ich in der Lage sein, danach gehend zu erhalten.

Auch ich bin mir nicht sicher, ob dies der optimale Weg, um einige einfache SVG-Klassen zu übernehmen, sollte ich ihnen die DOM-Klassen modelliert werden, anstatt zu versuchen JSNI zu benutzen?

Danke

War es hilfreich?

Lösung

Sie benötigen ein Element zu appendChild geben. Also einfach Ihre Overlay-Klasse machen erweitert Element statt JavaScriptObject.

public class SVGPanel extends Element {

Beachten Sie, dass Element ist eine Unterklasse von JavaScriptObject.

Andere Tipps

ich denke, es ist ein Besuch wert GWT-svg - während es so aussieht, sie gestoppt Entwicklung um 2007, der Code-Basis solide genug scheint, schön illustriert, was Sie tun wollen, und es hat einige nette Details, wie spezielle Implementierungen für die (böse) IE6. Auch wenn der Code nicht, dass sie nicht funktioniert Art und Weise ist es, hoffentlich wird es Ihnen eine Idee zu beginnen waren (und vielleicht würden Sie selbst Ihre Arbeit Open Source freigeben, damit andere davon profitieren können).

Und es gibt auch GWTCanvas - die Macht sein, was Sie zu implementieren versuchen :) Wenn nicht, überprüft es lohnt sich zumindest ihre API aus, um zu sehen, wie sie behandelt Dinge.

Viel Glück!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top