微信小程序是用js还是php,微信小程序后台 node.js 和php哪个好

有用java解析过SVG同学吗

Building an application around SVG with Batik

The Batik toolkit provides a module called the JSVGCanvas, a swing

component that can be used to display static or dynamic SVG documents.

With the JSVGCanvas, developers can easily display SVG documents (from a

URI or a DOM tree) and manipulate it - such as rotating, zooming,

panning, selecting text, or activating hyperlinks. First this section

explains how to create a JSVGCanvas and integrate it in a Swing

application. The rest of this section tells you how to accomplish some

common SVG canvas-related tasks such as how to track all events that

occur while rendering a SVG document, or how to manipulate your SVG

document using the JavaTM language.

Creating a JSVGCanvas

The JSVGCanvas is a Swing component that follows the Swing design

rule[4]. It means that the component is not thread safe and all

operations must be done as described in the swing tutorial. The

JSVGCanvas is also a JavaBean so it can be used in visual application

builders. The following example shows how developers can easily create

and use the JSVGCanvas component (see also Figure 3).

import java.awt.*;

import java.awt.event.*;

import java.io.*;

import javax.swing.*;

import org.apache.batik.swing.JSVGCanvas;

import org.apache.batik.swing.gvt.GVTTreeRendererAdapter;

import org.apache.batik.swing.gvt.GVTTreeRendererEvent;

import org.apache.batik.swing.svg.SVGDocumentLoaderAdapter;

import org.apache.batik.swing.svg.SVGDocumentLoaderEvent;

import org.apache.batik.swing.svg.GVTTreeBuilderAdapter;

import org.apache.batik.swing.svg.GVTTreeBuilderEvent;

public class SVGApplication {

public static void main(String[] args) {

JFrame f = new JFrame("Batik");

SVGApplication app = new SVGApplication(f);

f.getContentPane().add(app.createComponents());

f.addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

System.exit(0);

}

});

f.setSize(400, 400);

f.setVisible(true);

}

JFrame frame;

JButton button = new JButton("Load...");

JLabel label = new JLabel();

JSVGCanvas svgCanvas = new JSVGCanvas();

public SVGApplication(JFrame f) {

frame = f;

}

public JComponent createComponents() {

final JPanel panel = new JPanel(new BorderLayout());

JPanel p = new JPanel(new FlowLayout(FlowLayout.LEFT));

p.add(button);

p.add(label);

panel.add(p, BorderLayout.NORTH);

panel.add(svgCanvas, BorderLayout.CENTER);

// Set the button action.

button.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent ae) {

JFileChooser fc = new JFileChooser(".");

int choice = fc.showOpenDialog(panel);

if (choice == JFileChooser.APPROVE_OPTION) {

File f = fc.getSelectedFile();

try {

svgCanvas.setURI(f.toURL().toString());

} catch (IOException ex) {

ex.printStackTrace();

}

}

}

});

// Set the JSVGCanvas listeners.

svgCanvas.addSVGDocumentLoaderListener(new SVGDocumentLoaderAdapter() {

public void documentLoadingStarted(SVGDocumentLoaderEvent e) {

label.setText("Document Loading...");

}

public void documentLoadingCompleted(SVGDocumentLoaderEvent e) {

label.setText("Document Loaded.");

}

});

svgCanvas.addGVTTreeBuilderListener(new GVTTreeBuilderAdapter() {

public void gvtBuildStarted(GVTTreeBuilderEvent e) {

label.setText("Build Started...");

}

public void gvtBuildCompleted(GVTTreeBuilderEvent e) {

label.setText("Build Done.");

frame.pack();

}

});

svgCanvas.addGVTTreeRendererListener(new GVTTreeRendererAdapter() {

public void gvtRenderingPrepare(GVTTreeRendererEvent e) {

label.setText("Rendering Started...");

}

public void gvtRenderingCompleted(GVTTreeRendererEvent e) {

label.setText("");

}

});

return panel;

}

}

收起

6f93e2c92fc5e58e2ec18df1db0b9f08.png

阅读全文

9ded402a52cdd2b9481e864a5093252c.png

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值