- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
浏览 documentation for JSVGCanvas
,看来我可能无法做到这一点。但是,这很有意义。如何从 String
变量而不是 File
创建 JSVGCanvas
?
我的想法是我可以做如下事情:
String svg = "svg data";
JFrame frame = new JFrame();
JSVGCanvas canvas = new JSVGCanvas();
canvas.setContentsFromString(svg);
frame.add(canvas);
frame.setVisible(true);
我知道我总是可以创建一个临时文件并从文件中设置 JSVGCanvas
的内容,但我宁愿避免这样做。我可以扩展 File
并覆盖它的方法吗?
注意:我使用的是 Jython,但我认为这也与 Java 相关,因此我同时使用了这两个标签。我更喜欢 Java 解决方案,但 Jython 解决方案也行
最佳答案
是的,你可以:
String parser = XMLResourceDescriptor.getXMLParserClassName();
SAXSVGDocumentFactory factory = new SAXSVGDocumentFactory(parser);
SVGDocument document = factory.createSVGDocument("", new ByteArrayInputStream(svg.getBytes("UTF-8")));
canvas.setSVGDocument(document);
这是通过 SAXSVGDocumentFactory
创建一个 SVGDocument
来实现的。 SAXSVGDocumentFactory
有一个方法 createSVGDocument(String, InputStream)
,其中字符串应该是 InputStream
表示的文件的 URI。然而,我们滥用它并给它一个空字符串,并使 InputStream
成为来 self 们的 svg-data String 的流。
使用 ""
可能会引发关于它们没有协议(protocol)的异常,具体取决于 Batik 的版本。如果是这种情况,请尝试 "file:///"
,即给它一个谎言的 URI。您可能想使用实际的 URI;你需要找出一个有效的给 Batik
关于java - 我可以创建没有 svg 文件的 JSVGCanvas 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30824711/
我正在尝试使用 Batik 在 JSVGCanvas 中显示 SVG 文件。在这个 SVG 文件中有一个图像。问题是图像没有显示。相反,我得到了一个错误图像。这是我的代码: SVG 文件 JA
使用:Apache batik (SVG)、NetBeans IDE、NetBeans 平台、Java 我有一个使用 batik 和 JSVGCanvas 组件显示 SVG 的应用程序。 我还调用了
我似乎在使用 batikSVG 使用 Java 操作 SVG 时遇到问题。我可以在 JSVG Canvas 上很好地显示 SVG,但是当我尝试使用 getSVGDocument 访问 Canvas 的
我一直在遵循本指南 http://softwareisart.blogspot.co.uk/2011/11/drag-and-drop-of-complex-custom-objects.html 使
我有一个来自 java 的 Batik 库的 JSVGCanvas 对象。在我的应用程序中,我在原理图中渲染了多个对象。我需要知道鼠标下方的组件,以便我可以渲染从外部源渲染的适当的工具提示和描述。 我
浏览 documentation for JSVGCanvas ,看来我可能无法做到这一点。但是,这很有意义。如何从 String 变量而不是 File 创建 JSVGCanvas? 我的想法是我可以
我的程序似乎工作得很好,但当我尝试调整组件大小时,我时不时地收到“IllegalStateExceptions:RunnableQueue 未启动或已退出”。我已将 documentState 设置为
我在图表应用程序中显示我的 SVG 绘图时遇到问题。 Canvas 采用其父组件的大小,而不是它包含的文档的大小。大于此大小的文档不会完全呈现。 案例 我有一幅画,例如,621x621 像素。
我花了 7 个小时尝试让 Batik 中的 JSVGCanvas 显示一个简单的 svg 文件。我无法让它发挥作用。有趣的是,鉴于我正在使用的依赖项的版本,我总是收到不同的错误消息。我上次的尝试给了我
我是一名优秀的程序员,十分优秀!