我想知道Vaadin 7.0.5是否可以在vaadin UI中包含SVG图形,而且没有任何附加组件。
我目前正在使用此代码
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”文字。
我在这个主题上发现的唯一topic日期是3年前的,并没有在书中找到线索。
在API中只存在接口:elemental.svg但它并没有真正帮助......
如果你们有任何线索......会很棒
答案 0 :(得分:4)
所以,似乎答案是,要在Vaadin 7中显示SVG,应该使用BrowserFrame来显示SVG资源。
使用类似下面的内容,其中sourceSVG是包含SVG数据的streamSource。
StreamResource ressourceSVG = new StreamResource(sourceSVG, "graphe.svg");
BrowserFrame embedded = new BrowserFrame("SVG", ressourceSVG);
verticalLayout.addComponent(component);
verticalLayout.addComponent(embedded);
setContent(verticalLayout);
加载网页后必须重新加载框架,但最终有效
答案 1 :(得分:2)
实际上,至少在版本7.1.7
中,您可以直接使用Embedded
和SVG。 Book中甚至有一个示例,但它处理的是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);
但是,StreamResource
也可以正常工作,至少使用以下代码段:
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
值