2013-07-24 10 views
5

私は、Vaadin 7.0.5でSVGグラフィックスをvaadin UIに含めることが可能かどうかを知りたいと思います。これにはアドオンは一切ありません。動的に生成されたSVGをVaadin UIに含めるにはどうすればいいですか?

私は現在だけで何も起こらない、このコード

StreamResource ressourceSVG = new StreamResource(source, "graphe.svg"); 

Embedded embedded = new Embedded("SVG", ressourceSVG); 
embedded.setType(Embedded.TYPE_OBJECT); 
embedded.setMimeType("images/svg+xml"); 

verticalLayout.addComponent(embedded); 
setContent(verticalLayout); 

そして、これと

を使用しています...ブラウザで「SVG」テキストの外観のみ。

私は3年前の日付であり、本の中で手がかりを見つけられませんでした。この件で見つかったのはtopicです。 elemental.svgをそれは本当にあなたたちはすべての手がかりを持っている場合は...だから偉大

+0

何が起こりますか?何が起こりませんか? – nexus

+0

@nexus唯一起こるのは、SVGテキストの出現です。 生成されたHTMLでは、私はこの要素によって生成された "SVG"テキストを持っています。 – Sidewinder94

+1

TYPE_OBJECTではなくTYPE_IMAGEまたはTYPE_BROWSERを使用するとどうなりますか? – nexus

答えて

4

だろう...

を助けていない、答えはSVGのためということであるようだ:APIで

唯一のインターフェイスが存在しますVaadin 7で表示するには、SVGリソースを表示するためにBrowserFrameを使用する必要があります。

ここで、sourceSVGはSVGデータを含むstreamSourceです。

StreamResource ressourceSVG = new StreamResource(sourceSVG, "graphe.svg"); 

BrowserFrame embedded = new BrowserFrame("SVG", ressourceSVG); 

verticalLayout.addComponent(component); 
verticalLayout.addComponent(embedded); 
setContent(verticalLayout); 

は、Webページをロードした後、フレームをリロードしなければならなかったが、それは最終的には実際に

2

を働いた、少なくともバージョン7.1.7に、あなたは直接SVGsでEmbeddedを使用することができます。それはThemeResourceを扱うが、でも例が、Bookである:

// A resource reference to some object 
Resource res = new ThemeResource("img/reindeer.svg"); 

// Display the object 
Embedded object = new Embedded("My SVG", res); 
object.setMimeType("image/svg+xml"); // Unnecessary 
layout.addComponent(object); 

しかし、StreamResource Sは、少なくとも次のスニペットで、正常に動作:

Embedded image = new Embedded(); 
image.setMimeType("image/svg+xml"); //also unnecessary here :p 
layout.addComponent(image); 
StreamSource source = //define your source 
image.setSource(new StreamResource(source, "image.svg")); 

(もしあればということに注意してください画像を再生成する必要がある場合は、StreamResourceの新鮮でユニークなfilename値を入力する必要があります)

+1

チップをありがとう、私は私のvaadinアプリを更新するときにそれを覚えてしようとします – Sidewinder94