6

我想知道是否可以在 Vaadin 7.0.5 中将 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 年前,并且在书中没有找到线索。

在 API 中只有接口存在:elemental.svg但它并没有真正帮助......

如果你们有任何线索......会很棒

4

2 回答 2

4

因此,似乎答案是,要在 Vaadin 7 中显示 SVG,应该使用 BrowserFrame 来显示 SVG 资源。

使用类似下面的东西,其中 sourceSVG 是包含 SVG 数据的流源。

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

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

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

加载网页后不得不重新加载框架,但它终于奏效了

于 2013-07-26T09:03:33.523 回答
2

实际上,至少在 version 中7.1.7,您可以Embedded直接使用 SVG。书中甚至还有一个示例,尽管它涉及ThemeResource

// 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);

但是,StreamResources 也可以正常工作,至少使用以下代码段:

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"));

(请注意,如果您需要重新生成图像,则必须为 提供新鲜、独特的filename价值StreamResource

于 2013-11-04T10:36:45.403 回答