java batik_Java Batik框架画SVG图 JSVGCanvas
软件下载地址:
创建一个JSVGCanvas代码案例: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) {
// Create a new JFrame.
JFrame f = new JFrame("Batik");
SVGApplication app = new SVGApplication(f);
// Add components to the frame.
f.getContentPane().add(app.createComponents());
// Display the frame.
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
f.setSize(400, 400);
f.setVisible(true);
}
// The frame.
protected JFrame frame;
// The "Load" button, which displays up a file chooser upon clicking.
protected JButton button = new JButton("Load...");
// The status label.
protected JLabel label = new JLabel();
// The SVG canvas.
protected JSVGCanvas svgCanvas = new JSVGCanvas();
public SVGApplication(JFrame f) {
frame = f;
}
public JComponent createComponents() {
// Create a panel and add the button, status label and the SVG canvas.
final JPanel panel = new JPanel(new BorderLayout());
JPanel p = new JPanel(new FlowLayout(FlowLayout.LEFT));
p.add(button);
p.add(label);
panel.add("North", p);
panel.add("Center", svgCanvas);
// 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;
}
}
java batik_Java Batik框架画SVG图 JSVGCanvas相关推荐
- html可以用坐标画svg图吗,HTML5如何使用SVG的方法示例
代码优化永远是程序员亘古不变的需求,而合理的利用SVG图片来代替部分PNG/JPG等格式的图片则是前端优化重要的一环,既然是优化,那我们先来看看SVG图片都有哪些优势: SVG 可被非常多的工具读取和 ...
- java测试类要画UML图吗,如何从Java代码生成UML图(尤其是序列图)?
如何从Java代码生成UML图(尤其是序列图)? 如何从现有Java代码生成UML图(尤其是序列图)? 14个解决方案 249 votes ObjectAid UML Explorer 是我用过的. ...
- java怎么给框架添加背景图,java里怎么给Container添加背景图片
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 public Frame1() { try { setDefaultCloseOperation(EXIT_ON_CLOSE); jbInit(); } ...
- Java的集合框架思维导图
- java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题
文章目录 先看成品 前言 一.项目目录结构 一.海报制作PosterUtil.java工具类 1. 描述 2. 代码 二.测试生成海报 1. 描述 2. 直接上代码 四.其他测试 1. Test1_C ...
- Java之集合框架图及 Collection和Collections的区别及用法总结
Java中Collection和Collections的区别: 1.Java集合框架图: 2.Collection接口: java.util.Collection是一个集合接口,其中定义了对集合对象有 ...
- java集合框架思维导图
一.JAVA集合框架思维导图 二.java集合框架图 三.Java集合框架体系图
- java 折线动图_Java画折线图
JFreeChart 是开放源代码站点SourceForge.net 上的一个 JAVA 项目,它主要用来各种各样的图表,这些图表包括:饼图.柱状图 ( 普通柱状图以及堆栈柱状图 ).线图.区域图.分 ...
- java plt_matplotlib 画动态图以及plt.ion()和plt.ioff()的使用详解
学习python的道路是漫长的,今天又遇到一个问题,所以想写下来自己的理解方便以后查看. 在使用matplotlib的过程中,常常会需要画很多图,但是好像并不能同时展示许多图.这是因为python可视 ...
- java怎么画八卦图_自己画八卦图怎么画?电脑绘制八卦图|八卦图的简单画法
今天又是美妙的周五了,其实小编周一早上起床睁开眼的时候,就很期待的想着,如果今天是周五就好了.结果没想到,时间一下子就过去了,今天真的是周五了.啊哈哈,很绕是吧,还是不说废话了,来看看今天的教程方案吧 ...
最新文章
- 练习5-3 数字金字塔 (15 分)
- 隐藏画质代码_如何让千元机高画质满帧吃鸡?最全教程奉上!
- 我如何进入Docker容器的shell?
- Android+NDK+OpenGLES开发环境配置
- 5分钟盗走你的隐私照片,这个全球性漏洞到底有多可怕
- Mybatis一对一结果映射
- Unity3D开发技巧:如何避开unity编辑器的那些坑
- AAA及RADIUS/HWTACACS协议简介
- 如何屏蔽LOGD\LOGI等打印输出
- 测井曲线fft matlab,Matlab编程实现FFT实践及频谱分析
- 泰坦尼克号乘客存活预测详细笔记
- libreelec投屏_在LibreELEC上安装Entware
- 快播将关闭QVOD服务器 清理低俗和盗版内容
- Excel如何将商品名称中的商品型号提取出来
- Ubuntu上实现蓝牙串口通讯(SPP)
- three.js开发全景视频播放器的现实方法
- 计算机组成原理ce和we是什么,EL-JY-Ⅱ 计算机组成原理第二套 实验三
- 理解extends与implements
- java程序员的大数据之路(6):定制的Writable类型
- php+发送邮件标题乱码_php邮件标题乱码的解决方法
热门文章
- 解决win10桌面图标和任务栏图标一直闪烁
- 磁力云播Android代码,磁力云播
- 海思Hi3559AV100ES Camera芯片处理器参数
- 双击java安装包没有反应_eclipse安装包双击没反应怎么回事?
- 测试人员必会用例设计方法 —— 正交表
- 冰点密码破解 — 强悍的调试器 SOFTICE 1
- 国内完全免费的电子书籍下载
- 工业级串口Modbus数据绘制曲线及上位机监控软件DotTrend
- v-ray 5.0 渲染器参数说明
- 网上鞋店html,“鞋店”是“shoes store”还是“shoe store”?