JFreeChart使用总结

zprealman

贡献于2013-08-01

字数:0 关键词: JFreeChart 图表/报表制作

JFREECHART 使 用总 结 使 用总 结 使 用总 结 使 用总 结 完 成 人:王 雷 完成时间:2009-3-102009-3-102009-3-102009-3-10 2009-3-2009-3-2009-3-2009-3-19 19 19 19 修改 目录 一、JFreeChart 简介..............................................................................................................................3 二、JFreeChart 的获取..........................................................................................................................3 三、JFreeChart 环境配置......................................................................................................................3 四、JFreeChart 功能介绍......................................................................................................................4 五、JFreeChart 核心类库介绍............................................................................................................. 4 六、JFreeChart 开发..............................................................................................................................5 第一步:建立 DataSet 数据源.....................................................................................................5 第二步:创造 JFreeChart............................................................................................................. 5 第三步:设置图形显示的属性....................................................................................................6 第四步:写入图片或输出界面....................................................................................................6 七、JFREECHART 图片在 web中的应用.........................................................................................8 7.1 在eclipse 中创建 tomcat 工程............................................................................................... 8 7.2 创建 web.xml...........................................................................................................................8 7.3 配置 web.xml...........................................................................................................................9 7.4 创建含有 JFreeChart 图片的页面.........................................................................................9 7.5 配置 server.xml..................................................................................................................... 12 7.6 测试页面.................................................................................................................................12 八、JFreeChart 使用的优缺点........................................................................................................... 13 1.优点:........................................................................................................................................13 2.缺点:........................................................................................................................................13 附录 1:JFreeChart 中文 API(Application Programming Interface).........................................14 附录 2:GNU通用公共许可证(中文版).................................................................................... 22 导言............................................................................................................................................... 22 0.定义............................................................................................................................................ 23 1.源代码.....................................................................................................................................23 2.基本的许可.............................................................................................................................24 3.保护用户的合法权利不受反破解法侵犯...........................................................................24 4.发布完整副本........................................................................................................................ 24 5.发布修改过的源码版本........................................................................................................24 6.发布非源码形式的副本........................................................................................................25 7.附加条款.................................................................................................................................26 8.终止授权.................................................................................................................................27 9.获取副本不需要接受本授权.................................................................................................. 27 10.下游接收者的自动授权.........................................................................................................27 11.专利权...................................................................................................................................28 12.不要放弃别人的自由..........................................................................................................29 13.和 GNU Affero 通用公共授权一起使用...........................................................................29 14.本授权的修订版..................................................................................................................29 15.免责申明...............................................................................................................................29 16.责任范围...............................................................................................................................30 17.第 15 和16 节的解释..........................................................................................................30 一、JFreeChart JFreeChart JFreeChart JFreeChart 简介 JFreeChart 是开放源代码站点 SourceForge.net 上的一个 JAVA项目,它主要用来各种各 样的图表,这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分 布图、混合图、甘特图以及一些仪表盘等等。这些不同式样的图表基本上可以满足目前的要 求。当在项目中客户需要图标分析时,JFreeChart 便是最好的选择,JFreeChart 是开源项目, 可以方便的从其官方网站上获得其源代码,可以方便的与 Swing 相结合使用,还可以导入 到Web 页面中,更是可以方便的利用其工厂方法将图表写入 jpeg 或者 png 格式的图片中, 本文档将简要介绍小 JFreeChart 的使用。 二、JFreeChart JFreeChart JFreeChart JFreeChart 的获取 JFreeChart 是JFreeChart 公司在开源网站 SourceForge.net 上的一个项目,该公司的主要产品 有如下: 1.JFreeReport :报表解决工具 2.JFreeChart:Java 图形解决方案(Application/Applet/Servlet/Jsp) 3.JCommon :JFreeReport 和JFreeChart 的公共类库 4.JFreeDesigner :JFreeReport 的报表设计工具 我们可以从 jfree 官方网站上获取最新版本和相关资料(但是 jfree 的document 需要40 美金才能获取), 获取地址:http://www.jfree.org/jfreechart/index.html(同时可以获得简明介绍) 我们以当前最新版本:jfreechart-1.0.12.zip 为例子进行说明。 三、JFreeChart JFreeChart JFreeChart JFreeChart 环境配置 1、解压jfreechart-1.0.12.zip 到指定位置,其中 source 是jfreechart 的源码, jfreechart-1.0.12-demo.jar 是例子程序。 2、为了配置成功,我们需要关注的文件有如下三个:jfreechart-1.0.12.jar 、 lib\jcommon-1.0.15.jar、lib\gnujaxp.jar。 JCommon-1.0.15.jar 是一组有用的classes集合. 这个类库包含了以下功能:* 文本工具类(text utilities), * 用来显示关于应用程序信息的用户界面类,* 布局定制管理器,* 一个日期选择 面板,* 序列化工具类,*XML解析器支持类。 3、如果是 Application 开发,把上述三个文件拷贝到%JAVA_HOME%\LIB 中,同时在环 境变量 CLASSPATH 中加入。 在开发中,还有在工程中导入 jfreechart-1.0.12.jar,jcommon-1.0.15.jar,否则会在文件 第一行提示有错误。 如果是 WEB 开发,以 TOMCAT 中的一个 WEB 项目 TEST为例子说明: 把上述三个文件拷贝到 TEST\WEB-INF\LIB 中,然后修改 TEST\WEB-INF\web.xml 文 件,在其中加入如下代码: DisplayChart org.jfree.chart.servlet.DisplayChart DisplayChart /servlet/DisplayChart 至此 jfreechart 的配置就完成了,下面就可以进行 jfreechart 的开发了。这里值得提 出的是 jfreechart 的类结构设计前后兼容性不是很好,不同版本的 jfreechart 中类库结构可能 不一样,有时候可能需要查源码。 四、JFreeChart JFreeChart JFreeChart JFreeChart 功能介绍 JFreeChart 是一个免费的 Java 图表库,让开发人员开发出专业的图表显示在他们的应用 程序。 JFreeChart 的广泛的功能包括: • 翔实的 API,支持各种各样的图表类型; • 一种灵活的设计,易于扩展,和指标均服务器端和客户端的应用; • 支持多种类型的输出,包括 Swing 界面,图像文件(包括 PNG 和JPEG 格式) , 和矢量图形文件格式; • JFreeChart 是“开源”,或更具体的免费软件 。 使用 JFREECHART 能够是新下列图表: 饼图(二维和三维), 柱状图 (水平,垂直),线图,点图,时间变化图,甘特图, 股票行情图,混 和图, 温度计图, 刻度图等常用商用图表。 五、JFreeChart JFreeChart JFreeChart JFreeChart 核心类库介绍 jfreechart 源码主要由两个大的包组成:org.jfree.chart 和org.jfree.data。其中前 者主要与图形本身有关,后者与图形显示的数据有关。 核心类主要有: org.jfree.chart.JFreeChart:图表对象,任何类型的图表的最终表现形式都是在该对象 进行一些属性的定制。JFreeChart 引擎本身提供了一个工厂类用于创建不同类型的图表对象。 org.jfree.data.category.XXXDataSet:数据集对象,用于提供显示图表所用的数据。根据 不同类型的图表对应着很多类型的数据集对象类。 org.jfree.chart.plot.XXXPlot:图表区域对象,基本上这个对象决定着什么样式的图表, 创建该对象的时候需要 Axis、Renderer 以及数据集对象的支持。 org.jfree.chart.axis.XXXAxis:用于处理图表的两个轴:纵轴和横轴。 org.jfree.chart.render.XXXRender:负责如何显示一个图表对象。 org.jfree.chart.urls.XXXURLGenerator:用于生成 Web 图表中每个项目的鼠标点击链 接。 XXXXXToolTipGenerator:用于生成图象的帮助提示,不同类型图表对应不同类型的 工具提示类。 六、JFreeChart JFreeChart JFreeChart JFreeChart 开发 要建立一个 JFreeChart 图形主要有以下三个步骤(以柱图为例): 第一步:建立 DataSet DataSet DataSet DataSet 数据源 BarChart 使用的dataset 接口是org.jfree.data.defaultcategorydataset 的dataset 。使用 categorydataset 的子类 org.jfree.data.defaultcategorydataset,再用addValue()方法把资料加 入到 dataset 中,建立包含数值的二维阵列,代码如下: DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(100, "100", "苹果"); dataset.addValue(200, "200", "梨子"); dataset.addValue(300, "300", "葡萄"); dataset.addValue(400, "400", "香蕉"); dataset.addValue(500, "500", "荔枝"); dataset.addValue(600, "600", "西瓜"); 或者使用org.jfree.data.datasetutilities , CategoryDataset dataset = DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, data); 其中:rowKeys 表示 X轴数据,columnKeys 表示 Y轴数据,data 表示填充柱状图所要的实 际数据(来自于数据库)。 第二步:创造 JFreeChartJFreeChartJFreeChartJFreeChart 要用 dataset 创造一个 JFreeChart 类别,我们并不直接实例化出一个 JFreeChart 实例, 而是使用 ChartFactory 工厂类来创造一个 JFreeChart 实例。代码如下: JFreeChart chart = ChartFactory.createBarChart3D( "水果产量图",//JFreeChart标题 "水果",//目录轴显示标签 "产量",//数值轴显示标签 dataset, //数据源 PlotOrientation.VERTICAL, //图表方向:水平、垂直 true, //是否是否显示图例(对于简单的柱状图是false) false, //是否生成热点工具 false); //是否生成 URL 连接 第三步:设置图形显示的属性 a ) ValueAxis 类,设置柱到图上下边的距离。实现方法是: ValueAxis rangeAxis = plot.getRangeAxis(); 设置最高的一个柱与图片顶端的距离: rangeAxis.setUpperMargin(0.15) 设置最低的一个柱与图片底端的距离: rangeAxis.setLowerMargin(0.15) b)org.jfree.chart.renderer.BarRenderer3D 类,设置图形上显示的数值。实现方法如下: BarRenderer3D renderer = new BarRenderer3D(); renderer.setBaseOutlinePaint(Color.BLACK); 设置 Wall 的颜色: renderer.setWallPaint(Color.gray); 设置每个柱的颜色: renderer.setSeriesPaint(0, new Color(0, 0, 255)); renderer.setSeriesPaint(1, new Color(0, 100, 255)); renderer.setSeriesPaint(2, Color.GREEN); 设置每个柱的 Outline 颜色 renderer.setSeriesOutlinePaint(0, Color.BLACK); renderer.setSeriesOutlinePaint(1, Color.BLACK); renderer.setSeriesOutlinePaint(2, Color.BLACK); 设置每个地区所包含的平行柱之间的距离 renderer.setItemMargin(0.1); 显示每个柱的数值,并修改该数值的字体属性 renderer.setItemLabelFont(new Font("黑体",Font.PLAIN,12)); renderer.setItemLabelsVisible(true); 为图形加入超连接 renderer.setItemURLGenerator(new StandardCategoryURLGenerator()); renderer.setToolTipGenerator(new StandardCategoryToolTipGenerator()); 第四步:写入图片或输出界面 a. 写入图片 利用ChartUtilities.writeChartAsJPEG(fos_jpg,//图片输出地址 1.0f,//设置图片质量 chart,//指定chart 500,//设置图片宽度 400);//设置图片高度 在打开图片时,有可能出现异常,注意扑捉异常。 代码如下: FileOutputStreamfos_jpg=nullnullnullnull; trytrytrytry{ fos_jpg=newnewnewnewFileOutputStream("D:fruit.jpg"); ChartUtilities.writeChartAsJPEG(fos_jpg,1.0f,chart,500, 400); }finallyfinallyfinallyfinally{ trytrytrytry{ fos_jpg.close(); }catchcatchcatchcatch(Exceptione){} } b.显示图片 使用 ChartFrame 类, ChartFrame ChartFrame = new ChartFrame(“水果产量图”,chart); chartFrame.pack(); chartFrame.setFont(newnewnewnewFont("宋体",Font.BOLD,20)); chartFrame.setVisible(truetruetruetrue); 柱状图实例结果输出: 其他的图创建方法都类似,但是每种图形都将对应每个 dataset,所以在使用的时候注意选择 创建 dataset 数据源。 七、JFREECHART JFREECHART JFREECHART JFREECHART 图片在 web web web web 中的应用 通过上边的介绍,我们已经知道 JFreechart是很好的 Java图表生成工具,利用 JFreeChart可以很方便的生产饼图、折线图、柱图等图表。可以更加形象的分析数据。本部 分主要介绍 JFreeChart生成的图片在 Web工程中的应用。 7.17.17.17.1在eclipse eclipse eclipse eclipse 中创建 tomcat tomcat tomcat tomcat 工程 在eclipse中创建 tomcat工程,须先在 eclipse中安装 tomcat插件。Tomcat插件 是开源项目,可以在其官方网站免费获得。 Tomcat插件获得的网站是 http://www.sysdeo.com/eclipse/tomcatPlugin.html ,下载tomcat 插件 tomcatPluginV321.rar,将其解压到 Eclipse的plugins目录下。之后再启动 Eclipse,在IDE中 选择“Window”菜单的“CustomizePerspective…”,展开弹出窗口的 Other结点,可以看 到下面有 Tomcat选项,打上钩按“OK”关闭窗口。做完这一步,在 IDE的工具栏就会能看到 tomcat小猫的图标。 然后在到“Windows”菜单的“perferences”去做一些关于 tomcat的设置,正确选择 所安装的 tomcat版本(我使用的是 Tomcat5.5版本),指定 tomcat主目录和 tomcat的 server.xml配置文件,然后展开 Tomcat,选下边的 JVMSetting,选择 JRE为“Detected VM”,确认无误后点击”OK”完成设置。 好了,完成以上的设置,此时就可以在 eclipse中创建一个 tomcat工程,选择“IDE” 的“file”菜单下面的“Project”菜单,选择”TomcatProject”,然后输入工程名字 (TestJFreeChartWeb),点击“Finnish”完成工程创建。 7.27.27.27.2 创建 web.xmlweb.xmlweb.xmlweb.xml 在Tomcat工程目录下 WEB-INF目录下,创建 web.xml。具体步骤为: 1.在右击 Tomcat工程目录下 WEB-INF目录,选择“new”->“File”。 2.输入 file名称为 web.xml,点击“finish”完成创建。 3.在打开的 file中输入以下内容: 至此完成 web.xml的创建。 7.3添加相关 JAR文件 1.右击项目名选择“BuildPath”,在其下拉框中选择最后一个“ConfigBulidPath”。 2.选择“Libraries”。 3.然后在选择“AddExternalJARs…”. 4.在弹出的对话框中选择在/common/lib/jasper-runtime.jar, jsp-api.jar,servlet-api.jar 等JAR包文件。在加入 JFreeChart需要的 jfreechart-1.0.12.jar,jcommon-1.0.15.jar 即可。 5.再将 jfreechart-1.0.12.jar,jcommon-1.0.15.jar 拷到工程目录下 WEB-INF/lib 文件夹中 即可。 7.37.37.37.3 配置 web.xmlweb.xmlweb.xmlweb.xml 在web.xml 文件中间加入以下的配置。 DisplayChart org.jfree.chart.servlet.DisplayChart DisplayChart /servlet/DisplayChart 7.47.47.47.4 创建含有 JFreeChart JFreeChart JFreeChart JFreeChart 图片的页面 1.右击 Tomcat工程目录下 WEB-INF目录,选择“new”->“File”。 2.输入 file名称为 xyline.jsp,点击“finish”完成创建。 3.打开 File文件,在文件中输入以下代码: <%@pagecontentType="text/html;charset=GB2312"%> <%@pageimport="org.jfree.*, java.io.*"%> java.awt.Font, org.jfree.data.category.CategoryDataset, org.jfree.chart.ChartUtilities, org.jfree.chart.renderer.category.LineAndShapeRenderer, org.jfree.chart.labels.StandardCategoryItemLabelGenerator, org.jfree.chart.plot.CategoryPlot, org.jfree.data.category.DefaultCategoryDataset, org.jfree.chart.ChartFactory, org.jfree.chart.plot.PlotOrientation, org.jfree.chart.JFreeChart, org.jfree.chart.servlet.ServletUtilities, org.jfree.chart.entity.StandardEntityCollection, org.jfree.chart.ChartRenderingInfo, org.jfree.chart.imagemap.StandardURLTagFragmentGenerator, org.jfree.chart.labels.StandardCategoryItemLabelGenerator, org.jfree.chart.renderer.xy.XYLineAndShapeRenderer, <%@page import="org.jfree.data.general.DatasetUtilities,org.jfree.chart.image map.StandardToolTipTagFragmentGenerator "%> 程序员学历情况调查表 <% //创建折线图需要的数据源 double[][]data={{380,1620,6100,3520,180}}; String[]rowKeys={"人数"}; String[]columnKeys={"高中以下","高中","本科","硕士","博士"}; //调用工厂方法创建数据源 CategoryDatasetdataset=DatasetUtilities.createCategoryDataset( rowKeys,columnKeys,data); //调用工厂方法创建LineChart JFreeChartchart=ChartFactory.createLineChart("程序员学历情况调查表 -折线图","学历","人数", dataset,PlotOrientation.VERTICAL, true,//生成图例 true,//生成热点工具,如果要在图片中实现鼠标放上时显示数据,须设置为true true);//生成URL链接 //取出图片标题,并对其字体进行设置 chart.getTitle().setFont(newFont("隶书",Font.BOLD,20)); CategoryPlotplot=chart.getCategoryPlot(); Fontfont=newFont("宋体",Font.BOLD,15); chart.getLegend().setItemFont(font); //对横竖坐标标签进行字体设置 plot.getDomainAxis().setTickLabelFont(font); plot.getDomainAxis().setLabelFont(font); plot.getRangeAxis().setLabelFont(font); LineAndShapeRendererlineandshaperenderer=(LineAndShapeRenderer) plot .getRenderer(); lineandshaperenderer.setBaseShapesVisible(true);//series点(即数 据点)可见 //lineandshaperenderer.setBaseLinesVisible(true); lineandshaperenderer.setBaseItemLabelGenerator(new//显示折点数据 StandardCategoryItemLabelGenerator()); lineandshaperenderer.setBaseItemLabelsVisible(true); StandardEntityCollectionsec=newStandardEntityCollection(); ChartRenderingInfoinfo=newChartRenderingInfo(sec); //Stringfilename= ServletUtilities.saveChartAsPNG(chart,500,300,info,session); //写入图片文件 Stringfilename=ServletUtilities.saveChartAsJPEG(chart,700,500, info,session); PrintWriterw=newPrintWriter(out);//输出MAP信息 //将图片热点链接信息写入图片map ChartUtilities.writeImageMap(w,"map0",info,false); //保存图片地址 StringgraphURL=request.getContextPath() +"/servlet/DisplayChart?filename="+filename; %> "width=700height=500 border=0usemap="#map0">


7.57.57.57.5 配置 server.xmlserver.xmlserver.xmlserver.xml 在tomcat工程中配置 server.xml信息,可以有两种方式: 1.右击工程名称,选择“TomcatProject”,在其下拉框中选择“Updatacontext definition”,点击提示“OparetionSuccessful”,则说明在 server.xml 中已配置好元素。 2.在/conf/server.xml中手动配置元素。具体方法 是:用记事本方式打开 server.xml,在元素里添加元素,添 加如下代码: 元素的属性描述参见下表: 描述 属性 path 指定访问该 Web应用的 URL入口 docBase 指定 Web应用的文件路径。可以给定绝对路径,也可以给定相对于 Host 的appBase 属性的相对路径。如果 Web应用采用开放目录结 构,那就指定 Web应用的根目录;如果 Web应用是个 WAR文件,那 就指定 WAR文件的路径 reloadable 如果这个属性设置为 true,Tomcat 服务器在运行状态下会监视在 WEB-INF/class 和WEB-INF/lib 目录下 CLASS 文件的改动。如果监 测到有 class 被更新,服务器会自动加载 Web应用。 workDir 指定 work 的文件路径。 7.67.67.67.6测试页面 启动 tomcat,打开 IE,在地址栏中输入 http://localhost:8080/Test/xyline.jsp 回车即可显示一下网页,把鼠标放在这点上,将会出现如图那样提示节点数据。 八、JFreeChart JFreeChart JFreeChart JFreeChart 使用的优缺点 1.1.1.1.优点: 图表能使数据形象直观的表现,给数据统计也提供了方便,JFreeChart 目前是最好的 java 图 形解决方案,基本能够解决目前的图形方面的需求,主要包括如下几个方面: 饼图(二维和三维), 柱状图 (水平,垂直),线图,点图,时间变化图,甘特图, 股票行情图,混和图, 温度计图, 刻度图等常用商用图表),图形可以导出成 PNG 和JPEG 格式,同时还可以与 PDF 和EXCEL 关联。JFreeChart 还是开源项目,可以在其官方网站上得到其源代码。 2.2.2.2.缺点: JFreeChart 项目本身的类结构设计的并不是很好,首先在创建图表的时候用到了大量的 工厂方法,这样做虽然可以简化创建图表代码,但是对项目本身或者开发人员来讲自行 扩展一种新的图标仍然是一件很麻烦的事情;其次除图标本身外其余的类过于复杂,使 用者必须去了解每个类型的图表对象应该对应哪些 Axis、Plot、Renderer 类,并且必须 非常熟悉这些类的构造方法中的每个参数的具体含义。不过虽然还存在很多问题,但是 JFreeChart 本身仍不失为一个优秀的图表引擎。 JFreeChart 还有个缺点是汉字显示的问题,我在网上找来些这方面的资料,说是在其解 压文件下找其字体的配置文件,不过我在最新的版本中没有找到。我的解决方案是,例 如在柱状图中,我们可以获取纵轴或横轴的显示标签,在标签上设置显示字体,可以达 到显示汉字的效果。 代码如下: ((CategoryPlot)chart.getPlot()).getDomainAxis().setLabelFont(new Font(" 宋 体 ",Font.BOLD,10)); //获得 x轴标签,并设置字体 ((CategoryPlot)chart.getPlot()).getRangeAxis().setLabelFont(new Font(" 宋 体 ",Font.BOLD,10)); //获得 y轴标签,并设置字体 附录 1111:JFreeChart JFreeChart JFreeChart JFreeChart 中文 APIAPIAPIAPI(ApplicationApplicationApplicationApplication ProgrammingProgrammingProgrammingProgramming InterfaceInterfaceInterfaceInterface) JFreeChart 类: void setAntiAlias(boolean flag) 字体模糊边界 void setBackgroundImage(Image image) 背景图片 void setBackgroundImageAlignment(int alignment) 背景图片对齐方式(参 数常量在 org.jfree.ui.Align 类中定义) void setBackgroundImageAlpha(float alpha) 背景图片透明度(0.0~1.0) void setBackgroundPaint(Paint paint) 背景色 void setBorderPaint(Paint paint) 边界线条颜色 void setBorderStroke(Stroke stroke) 边界线条笔触 void setBorderVisible(boolean visible) 边界线条是否可见 --------------------------------------------------------------------- TextTitle类: void setFont(Font font) 标题字体 void setPaint(Paint paint) 标题字体颜色 void setText(String text) 标题内容 --------------------------------------------------------------------- StandardLegend(Legend)类: void setBackgroundPaint(Paint paint) 图示背景色 void setTitle(String title) 图示标题内容 void setTitleFont(Font font) 图示标题字体 void setBoundingBoxArcWidth(int arcWidth) 图示边界圆角宽 void setBoundingBoxArcHeight(int arcHeight) 图示边界圆角高 void setOutlinePaint(Paint paint) 图示边界线条颜色 void setOutlineStroke(Stroke stroke) 图示边界线条笔触 void setDisplaySeriesLines(boolean flag) 图示项是否显示横线(折线图有 效) void setDisplaySeriesShapes(boolean flag) 图示项是否显示形状(折线图 有效) void setItemFont(Font font) 图示项字体 void setItemPaint(Paint paint) 图示项字体颜色 void setAnchor(int anchor) 图示在图表中的显示位置(参数常量在 Legend 类中定义) --------------------------------------------------------------------- Axis类: void setVisible(boolean flag) 坐标轴是否可见 void setAxisLinePaint(Paint paint) 坐标轴线条颜色(3D轴无效) void setAxisLineStroke(Stroke stroke) 坐标轴线条笔触(3D轴无效) void setAxisLineVisible(boolean visible) 坐标轴线条是否可见(3D轴无 效) void setFixedDimension(double dimension) (用于复合表中对多坐标轴的设 置) void setLabel(String label) 坐标轴标题 void setLabelFont(Font font) 坐标轴标题字体 void setLabelPaint(Paint paint) 坐标轴标题颜色 void setLabelAngle(double angle)` 坐标轴标题旋转角度(纵坐标可以旋转) void setTickLabelFont(Font font) 坐标轴标尺值字体 void setTickLabelPaint(Paint paint) 坐标轴标尺值颜色 void setTickLabelsVisible(boolean flag) 坐标轴标尺值是否显示 void setTickMarkPaint(Paint paint) 坐标轴标尺颜色 void setTickMarkStroke(Stroke stroke) 坐标轴标尺笔触 void setTickMarksVisible(boolean flag) 坐标轴标尺是否显示 ValueAxis(Axis)类: void setAutoRange(boolean auto) 自动设置数据轴数据范围 void setAutoRangeMinimumSize(double size) 自动设置数据轴数据范围时数 据范围的最小跨度 void setAutoTickUnitSelection(boolean flag) 数据轴的数据标签是否自动 确定(默认为 true) void setFixedAutoRange(double length) 数据轴固定数据范围(设置 100 的话就是显示 MAXVALUE 到MAXVALUE-100 那段数据范围) void setInverted(boolean flag) 数据轴是否反向(默认为 false) void setLowerMargin(double margin) 数据轴下(左)边距 void setUpperMargin(double margin) 数据轴上(右)边距 void setLowerBound(double min) 数据轴上的显示最小值 void setUpperBound(double max) 数据轴上的显示最大值 void setPositiveArrowVisible(boolean visible) 是否显示正向箭头(3D轴 无效) void setNegativeArrowVisible(boolean visible) 是否显示反向箭头(3D轴 无效) void setVerticalTickLabels(boolean flag) 数据轴数据标签是否旋转到垂直 void setStandardTickUnits(TickUnitSource source) 数据轴的数据标签(可 以只显示整数标签,需要将 AutoTickUnitSelection 设false) NumberAxis(ValueAxis)类: void setAutoRangeIncludesZero(boolean flag) 是否强制在自动选择的数据 范围中包含 0 void setAutoRangeStickyZero(boolean flag) 是否强制在整个数据轴中包含 0,即使 0不在数据范围中 void setNumberFormatOverride(NumberFormat formatter) 数据轴数据标签的 显示格式 void setTickUnit(NumberTickUnit unit) 数据轴的数据标签(需要将 AutoTickUnitSelection 设false) DateAxis(ValueAxis)类: void setMaximumDate(Date maximumDate) 日期轴上的最小日期 void setMinimumDate(Date minimumDate) 日期轴上的最大日期 void setRange(Date lower,Date upper) 日期轴范围 void setDateFormatOverride(DateFormat formatter) 日期轴日期标签的显示 格式 void setTickUnit(DateTickUnit unit) 日期轴的日期标签(需要将 AutoTickUnitSelection 设false) void setTickMarkPosition(DateTickMarkPosition position) 日期标签位置 (参数常量在 org.jfree.chart.axis.DateTickMarkPosition 类中定义) CategoryAxis(Axis)类: void setCategoryMargin(double margin) 分类轴边距 void setLowerMargin(double margin) 分类轴下(左)边距 void setUpperMargin(double margin) 分类轴上(右)边距 void setVerticalCategoryLabels(boolean flag) 分类轴标题是否旋转到垂直 void setMaxCategoryLabelWidthRatio(float ratio) 分类轴分类标签的最大 宽度 --------------------------------------------------------------------- Plot类: void setBackgroundImage(Image image) 数据区的背景图片 void setBackgroundImageAlignment(int alignment) 数据区的背景图片对齐 方式(参数常量在 org.jfree.ui.Align 类中定义) void setBackgroundPaint(Paint paint) 数据区的背景图片背景色 void setBackgroundAlpha(float alpha) 数据区的背景透明度(0.0~1.0) void setForegroundAlpha(float alpha) 数据区的前景透明度(0.0~1.0) void setDataAreaRatio(double ratio) 数据区占整个图表区的百分比 void setOutLinePaint(Paint paint) 数据区的边界线条颜色 void setOutLineStroke(Stroke stroke) 数据区的边界线条笔触 void setNoDataMessage(String message) 没有数据时显示的消息 void setNoDataMessageFont(Font font) 没有数据时显示的消息字体 void setNoDataMessagePaint(Paint paint) 没有数据时显示的消息颜色 CategoryPlot(Plot)类: void setDataset(CategoryDataset dataset) 数据区的 2维数据表 void setColumnRenderingOrder(SortOrder order) 数据分类的排序方式 void setAxisOffset(Spacer offset) 坐标轴到数据区的间距 void setOrientation(PlotOrientation orientation) 数据区的方向 (PlotOrientation.HORIZONTAL 或PlotOrientation.VERTICAL) void setDomainAxis(CategoryAxis axis) 数据区的分类轴 void setDomainAxisLocation(AxisLocation location) 分类轴的位置(参数常 量在 org.jfree.chart.axis.AxisLocation 类中定义) void setDomainGridlinesVisible(boolean visible) 分类轴网格是否可见 void setDomainGridlinePaint(Paint paint) 分类轴网格线条颜色 void setDomainGridlineStroke(Stroke stroke) 分类轴网格线条笔触 void setRangeAxis(ValueAxis axis) 数据区的数据轴 void setRangeAxisLocation(AxisLocation location) 数据轴的位置(参数常 量在 org.jfree.chart.axis.AxisLocation 类中定义) void setRangeGridlinesVisible(boolean visible) 数据轴网格是否可见 void setRangeGridlinePaint(Paint paint) 数据轴网格线条颜色 void setRangeGridlineStroke(Stroke stroke) 数据轴网格线条笔触 void setRenderer(CategoryItemRenderer renderer) 数据区的表示者(详见 Renderer 组) void addAnnotation(CategoryAnnotation annotation) 给数据区加一个注释 void addRangeMarker(Marker marker,Layer layer) 给数据区加一个数值范围 区域 PiePlot(Plot)类: void setDataset(PieDataset dataset) 数据区的 1维数据表 void setIgnoreNullValues(boolean flag) 忽略无值的分类 void setCircular(boolean flag) 饼图是否一定是正圆 void setStartAngle(double angle) 饼图的初始角度 void setDirection(Rotation direction) 饼图的旋转方向 void setExplodePercent(int section,double percent) 抽取的那块(1维数 据表的分类下标)以及抽取出来的距离(0.0~1.0),3D饼图无效 void setLabelBackgroundPaint(Paint paint) 分类标签的底色 void setLabelFont(Font font) 分类标签的字体 void setLabelPaint(Paint paint) 分类标签的字体颜色 void setLabelLinkMargin(double margin) 分类标签与图的连接线边距 void setLabelLinkPaint(Paint paint) 分类标签与图的连接线颜色 void setLabelLinkStroke(Stroke stroke) 分类标签与图的连接线笔触 void setLabelOutlinePaint(Paint paint) 分类标签边框颜色 void setLabelOutlineStroke(Paint paint) 分类标签边框笔触 void setLabelShadowPaint(Paint paint) 分类标签阴影颜色 void setMaximumLabelWidth(double width) 分类标签的最大长度(0.0~1.0) void setPieIndex(int index) 饼图的索引(复合饼图中用到) void setSectionOutlinePaint(int section,Paint paint) 指定分类饼的边框 颜色 void setSectionOutlineStroke(int section,Stroke stroke) 指定分类饼的边 框笔触 void setSectionPaint(int section,Paint paint) 指定分类饼的颜色 void setShadowPaint(Paint paint) 饼图的阴影颜色 void setShadowXOffset(double offset) 饼图的阴影相对图的水平偏移 void setShadowYOffset(double offset) 饼图的阴影相对图的垂直偏移 void setLabelGenerator(PieSectionLabelGenerator generator) 分类标签的 格式,设置成 null则整个标签包括连接线都不显示 void setToolTipGenerator(PieToolTipGenerator generator) MAP中鼠标移 上的显示格式 void setURLGenerator(PieURLGenerator generator) MAP中钻取链接格式 PiePlot3D(PiePlot)类: void setDepthFactor(double factor) 3D饼图的 Z轴高度(0.0~1.0) MultiplePiePlot(Plot)类: void setLimit(double limit) 每个饼图之间的数据关联(详细比较复杂) void setPieChart(JFreeChart pieChart) 每个饼图的显示方式(见 JFreeChart 类个 PiePlot 类) --------------------------------------------------------------------- AbstractRenderer 类: void setItemLabelAnchorOffset(double offset) 数据标签的与数据点的 偏移 void setItemLabelsVisible(boolean visible) 数据标签是否可见 void setItemLabelFont(Font font) 数据标签的字体 void setItemLabelPaint(Paint paint) 数据标签的字体颜色 void setItemLabelPosition(ItemLabelPosition position) 数据标签位置 void setPositiveItemLabelPosition(ItemLabelPosition position) 正数标 签位置 void setNegativeItemLabelPosition(ItemLabelPosition position) 负数标 签位置 void setOutLinePaint(Paint paint) 图形边框的线条颜色 void setOutLineStroke(Stroke stroke) 图形边框的线条笔触 void setPaint(Paint paint) 所有分类图形的颜色 void setShape(Shape shape) 所有分类图形的形状(如折线图的点) void setStroke(Stroke stroke) 所有分类图形的笔触(如折线图的线) void setSeriesItemLabelsVisible(int series,boolean visible) 指定分类 的数据标签是否可见 void setSeriesItemLabelFont(int series,Font font) 指定分类的数据标 签的字体 void setSeriesItemLabelPaint(int series,Paint paint) 指定分类的数据 标签的字体颜色 void setSeriesItemLabelPosition(int series,ItemLabelPosition position) 数据标签位置 void setSeriesPositiveItemLabelPosition(int series,ItemLabelPosition position) 正数标签位置 void setSeriesNegativeItemLabelPosition(int series,ItemLabelPosition position) 负数标签位置 void setSeriesOutLinePaint(int series,Paint paint) 指定分类的图形边 框的线条颜色 void setSeriesOutLineStroke(int series,Stroke stroke) 指定分类的图 形边框的线条笔触 void setSeriesPaint(int series,Paint paint) 指定分类图形的颜色 void setSeriesShape(int series,Shape shape) 指定分类图形的形状(如 折线图的点) void setSeriesStroke(int series,Stroke stroke) 指定分类图形的笔触 (如折线图的线) AbstractCategoryItemRenderer(AbstractRenderer)类: void setLabelGenerator(CategoryLabelGenerator generator) 数据标签的 格式 void setToolTipGenerator(CategoryToolTipGenerator generator) MAP中 鼠标移上的显示格式 void setItemURLGenerator(CategoryURLGenerator generator) MAP中钻取 链接格式 void setSeriesLabelGenerator(int series,CategoryLabelGenerator generator) 指定分类的数据标签的格式 void setSeriesToolTipGenerator(int series,CategoryToolTipGenerator generator) 指定分类的 MAP中鼠标移上的显示格式 void setSeriesItemURLGenerator(int series,CategoryURLGenerator generator) 指定分类的 MAP中钻取链接格式 BarRenderer(AbstractCategoryItemRenderer)类: void setDrawBarOutline(boolean draw) 是否画图形边框 void setItemMargin(double percent) 每个 BAR之间的间隔 void setMaxBarWidth(double percent) 每个 BAR的最大宽度 void setMinimumBarLength(double min) 最短的 BAR长度,避免数值太小 而显示不出 void setPositiveItemLabelPositionFallback(ItemLabelPosition position) 无法在 BAR中显示的正数标签位置 void setNegativeItemLabelPositionFallback(ItemLabelPosition position) 无法在 BAR中显示的负数标签位置 BarRenderer3D(BarRenderer)类: void setWallPaint(Paint paint) 3D坐标轴的墙体颜色 StackedBarRenderer(BarRenderer)类: 没有特殊的设置 StackedBarRenderer3D(BarRenderer3D)类: 没有特殊的设置 GroupedStackedBarRenderer(StackedBarRenderer)类: void setSeriesToGroupMap(KeyToGroupMap map) 将分类自由的映射成若干个 组(KeyToGroupMap.mapKeyToGroup(series,group)) LayeredBarRenderer(BarRenderer)类: void setSeriesBarWidth(int series,double width) 设定每个分类的宽度(注 意设置不要使某分类被覆盖) WaterfallBarRenderer(BarRenderer)类: void setFirstBarPaint(Paint paint) 第一个柱图的颜色 void setLastBarPaint(Paint paint) 最后一个柱图的颜色 void setPositiveBarPaint(Paint paint) 正值柱图的颜色 void setNegativeBarPaint(Paint paint) 负值柱图的颜色 IntervalBarRenderer(BarRenderer)类: 需要传 IntervalCategoryDataset 作为数据源 GanttBarRenderer(IntervalBarRenderer)类: void setCompletePaint(Paint paint) 完成进度颜色 void setIncompletePaint(Paint paint) 未完成进度颜色 void setStartPercent(double percent) 设置进度条在整条中的起始位置 (0.0~1.0) void setEndPercent(double percent) 设置进度条在整条中的结束位置 (0.0~1.0) StatisticBarRenderer(BarRenderer)类: 需要传 StatisticCategoryDataset 作为数据源 LineAndShapeRenderer(AbstractCategoryItemRenderer)类: void setDrawLines(boolean draw) 是否折线的数据点之间用线连 void setDrawShapes(boolean draw) 是否折线的数据点根据分类使用不同的 形状 void setShapesFilled(boolean filled) 所有分类是否填充数据点图形 void setSeriesShapesFilled(int series,boolean filled) 指定分类是否填充 数据点图形 void setUseFillPaintForShapeOutline(boolean use) 指定是否填充数据点的 Paint 也被用于画数据点形状的边框 LevelRenderer(AbstractCategoryItemRenderer)类: void setItemMargin(double percent) 每个分类之间的间隔 void setMaxItemWidth(double percent) 每个分类的最大宽度 CategoryStepRenderer(AbstractCategoryItemRenderer)类: void setStagger(boolean shouldStagger) 不同分类的图是否交错 MinMaxCategoryRenderer(AbstractCategoryItemRenderer)类: void setDrawLines(boolean drawLines) 是否在每个分类线间画连接线 void setGroupPaint(Paint groupPaint) 一组图形连接线的颜色 void setGroupStroke(Stroke groupStroke) 一组图形连接线的笔触 void setMaxIcon(Icon maxIcon) 最大值的 ICON void setMinIcon(Icon minIcon) 最小值的 ICON void setObjectIcon(Icon objectIcon) 所有值的 ICON AreaRender(AbstractCategoryItemRenderer)类: 没有特殊的设置 StackedAreaRender(AreaRender)类: 没有特殊的设置 附录 2222:GNU GNU GNU GNU 通用公共许可证(中文版) 第三版 2007 年6月29日 版权所有(C)2007 Free Software Foundation, Inc. (http://fsf.org) 允许所有人复制和发布本授权文件的完整版本 但不允许对它进行任何修改 导言 GNU通用公共授权是一份针对软件和其他种类作品的自由的、公共的授权文 件。 大多数软件授权申明被设计为剥夺您共享和修改软件的自由。相反地,GNU 通用公共授权力图保护您分享和修改自由软件地自由——以确保软件对所有使 用者都是自由的。我们,自由软件基金会,对我们的大多数软件使用 GNU通用公 共授权;本授权同样适用于任何其作者以这种方式发布的软件。您也可以让您的 软件使用本授权。 当我们谈论自由软件时,我们指的是行为的自由,而非价格免费。GNU通用 公共授权被设计为确保您拥有发布自由软件副本(以及为此收费,如果您希望的 话)的自由,确保您能收到源代码或者在您需要时能获取源代码,确保您能修改软 件或者将它的一部分用于新的自由软件,并且确保您知道您能做这些事情。 为了保护您的权利,我们需要做出要求,禁止任何人否认您的这些权利或者 要求您放弃这些权利。因此,如果您发布此软件的副本或者修改它,您就需要肩 负起尊重他人自由的责任。 例如,如果您发布自由软件的副本,无论以免费还是以收费的模式,您都必 须把您获得的自由同样的给予副本的接收者。您必须确保他们也能收到或者得到 源代码。而且您必须向他们展示这些条款,以使他们知道自己享有这样的权利。 使用 GNU通用公共授权的开发者通过两项措施来保护您的权利:(1)声明 软件的版权;(2)向您提供本授权文件以给您复制、发布并且/或者修改软件的 法律许可。 为了保护软件开发者和作者,通用公共授权明确阐释自由软件没有任何担保 责任。如用户和软件作者所希望的,通用公共授权要求软件被修改过的版本必须 明确标示,从而避免它们的问题被错误地归咎于先前的版本。 某些设备被设计成拒绝用户安装或运行其内部软件的修改版本,尽管制造商 可以安装和运行它们。这从根本上违背了通用公共授权保护用户能修改软件的自 由的宗旨。此类滥用本授权的系统模式出现在了最让人无法接受的个人用户产品 领域。因此,我们设计了这个版本的通用公共授权来禁止那些产品的侵权行为。 如果此类问题在其他领域大量出现,我们准备好了在将来的通用公共授权版本里 扩展这项规定,以保护用户的自由。 最后,每个程序都经常受到软件专利的威胁。政府不应该允许专利权限制通 用计算机软件的发展和使用,但是在政府确实允许这种事情的地区,我们希望避 免应用于自由软件的专利权使该软件有效私有化的危险。为了阻止这样的事情的 发生,通用公共授权确保没有人能够使用专利权使得自由软件非自由化。 以下是复制,发布和修改软件的详细条款和条件。 条款和条件 0.0.0.0.定义 “本授权”指GNU通用公共授权第三版 “版权”一词同样指适用于其他产品如半导体防护罩等的保护版权的法律。 “本程序”指任何在本授权下发布的受版权保护的作品。被授权人称为“您”。 “被授权人”和“版权接受者”可以是个人或组织。 “修改”作品是指从软件中拷贝或者做出全部或一丁点儿的修改,这不同于 逐字逐句的复制,是需要版权许可的。修改成果被称为先前作品的“修改版本” 或者“基于”先前作品的软件。 “覆盖程序”指未被修改过的本程序或者基于本程序的程序。 “传播”程序指使用该程序做任何如果没有许可就会在适用的版权法下直接 或间接侵权的事情,不包括在电脑上执行程序或者是做出您不与人共享的修改。 传播包括复制,分发(无论修改与否),向公众共享,以及在某些国家的其他行 为。 “发布”作品指任何让其他组织制作或者接受副本的传播行为。仅仅通过电 脑网络和一个用户交流,且没有发送程序拷贝的行为不是发布。 一个显示“适当的法律通告”的交互的用户接口应包括这样一个方便而显著 的可视部件,它具有以下功能:(1)显示一个合适的版权通告;(2)告诉用户 对本程序没有任何担保责任(除非有担保明确告知),受权人可以在本授权下发 布本程序,以及如果阅读本授权协议的副本。如果该接口显示了一个用户命令或 选项列表,比如菜单,该列表中的选项需要符合上述规范。 1111.源代码 “源代码”指修改程序常用的形式。“目标代码”指程序的任何非源代码形 式。 “标准接口”有两种含义,一是由标准组织分支定义的官方标准;二是针对 某种语言专门定义的众多接口中,在该类语言的开发者中广为使用的那种接口。 可执行程序的“系统库”不是指整个程序,而是指任何包含于主要部件但不 属于该部件的部分,并且只是为了使能该部件而开发,或者为了实现某些已有公 开源代码的标准接口。“主要部件”在这里指的是执行程序的特定操作系统(如 果有的话)的主要的关键部件(内核,窗口系统等),或者生成该可执行程序时 使用的编译器,或者运行该程序的目标代码解释器。 目标代码中的程序“对应的源代码”指所有生成,安装,(对可执行程序而 言)运行该目标代码和修改该程序所需要的源代码,包括控制这些行为的脚本。 但是,它不包括程序需要的系统库,通用目的的工具,以及程序在完成某些功能 时不经修改地使用的那些不包括在程序中的普遍可用的自由软件。例如,对应的 源代码包括与程序的源文件相关的接口定义文件,以及共享库中的源代码和该程 序设计需要的通过如频繁的数据交互或者这些子程序和该程序其他部分之间的 控制流等方式获得的动态链接子程序。 对应的源代码不需要包含任何拥护可以从这些资源的其他部分自动再生的 资源。 源代码形式的程序对应的源代码定义同上。 2222.基本的许可 所有在本授权协议下授予的权利都是对本程序的版权而言,并且只要所述的 条件都满足了,这些授权是不能收回的。本授权明确的确认您可以不受任何限制 地运行本程序的未修改版本。运行一个本授权覆盖的程序获得的结果只有在该结 果的内容构成一个覆盖程序的时候才由本授权覆盖。本授权承认您正当使用或版 权法规定的其它类似行为的权利。 只要您的授权仍然有效,您可以无条件地制作,运行和传播那些您不发布的 覆盖程序。只要您遵守本授权中关于发布您不具有版权的资料的条款,您可以向 别人发布覆盖程序,以要求他们为您做出专门的修改或者向您提供运行这些程序 的简易设备。那些为您制作或运行覆盖程序的人作为您专门的代表也必须在您的 指示和控制下做到这些,请禁止他们在他们和您的关系之外制作任何您拥有版权 的程序的副本。 当下述条件满足的时候,在任何其他情况下的发布都是允许的。 转授许可证授权是不允许的,第 10节让它变的没有必要了。 3333.保护用户的合法权利不受反破解法侵犯 在任何实现 1996 年通过的世界知识产权组织版权条约第 11章中所述任务的 法律,或者是禁止或限制这种破解方法的类似法律下,覆盖程序都不会被认定为 有效的技术手段的一部分。 当您发布一个覆盖程序时,您将放弃任何禁止技术手段破解的法律力量,甚 至在本授权关于覆盖程序的条款下执行权利也能完成破解。同时,您放弃任何限 制用户操作或修改该覆盖程序以执行您禁止技术手段破解的合法权利的企图。 4444.发布完整副本 你可以通过任何媒介发布本程序源代码的未被修改过的完整副本,只要您显 著而适当地在每个副本上发布一个合适的版权通告;保持完整所有叙述本授权和 任何按照第 7节加入的非许可的条款;保持完整所有的免责申明;并随程序给所 有的接受者一份本授权。 您可以为您的副本收取任何价格的费用或者免费,你也可以提供技术支持或 者责任担保来收取费用。 5555.发布修改过的源码版本 您可以在第 4节的条款下以源码形式发布一个基于本程序的软件,或者从本 程序中制作该软件需要进行的修改,只要您同时满足所有以下条件: * a)制作的软件必须包含明确的通告说明您修改了它,并给出相应的修改 日期。 * b)制作的软件必须包含明确的通告,陈述它在本授权下发布并指出任何 按照第 7节加入的条件。这条要求修改了第 4节的“保持所有通知完整”的要求。 * c)您必须把整个软件作为一个整体向任何获取副本的人按照本授权协议 授权。本授权因此会和任何按照第 7节加入的条款一起,对整个软件及其所有部 分,无论是以什么形式打包的,起法律效力。本授权不允许以其他任何形式授权 该软件,但如果您个别地收到这样的许可,本授权并不否定该许可。 * d)如果您制作的软件包含交互的用户接口,每个用户接口都必须显示适 当的法律通告;但是,如果本程序包含没有显示适当的法律通告的交互接口,您 的软件没有必要修改他们让他们显示。 如果一个覆盖程序和其他本身不是该程序的扩展的程序的联合体,这样的联 合的目的不是为了在某个存储或发布媒体上生成更大的程序,且联合体程序和相 应产生的版权没有用来限制程序的使用或限制单个程序赋予的联合程序的用户 的合法权利的时候,这样的联合体就被称为“聚集体”。在聚集体中包含覆盖程 序并不会使本授权应用于该聚集体的其他部分。 6666.发布非源码形式的副本 您可以在第 4,5节条款下以目标代码形式发布程序,只要您同时以一下的一 种方式在本授权条款下发布机器可读的对应的源代码: * a)在物理产品(包括一个物理的发布媒介)中或作为其一部分发布目标 代码,并在通常用于软件交换的耐用的物理媒介中发布对应的源代码。 * b)在物理产品(包括一个物理的发布媒介)中或作为其一部分发布目标 代码,并附上有效期至少 3年且与您为该产品模型提供配件或客户服务的时间等 长的书面承诺,给予每个拥有该目标代码的人(1)要么在通常用于软件交换的 耐用物理媒介中,以不高于您执行这种源码的发布行为所花费的合理费用的价 格,一份该产品中所有由本授权覆盖的软件的对应的源代码的拷贝;(2)要么 通过网络服务器免费提供这些对应源代码的访问。 * c)单独地发布目标代码的副本,并附上一份提供对应源代码的书面承诺。 这种行为只允许偶尔发生并不能盈利,且在您收到的目标代码附有第 6节b规定 的承诺的时候。 * d)在指定的地点(免费或收费地)提供发布的目标代码的访问并在同样 的地点以不增加价格的方式提供对应源代码的同样的访问权。您不需要要求接收 者在复制目标代码的时候一道复制对应的源代码。如果复制目标代码的地点是网 络服务器,对应的源代码可以在另外一个支持相同复制功能的服务器上(由您或 者第三方运作),只要您在目标代码旁边明确指出在哪里可以找到对应的源代码。 无论什么样的服务器提供这些对应的源代码,您都有义务保证它在任何有需求的 时候都可用,从而满足本条规定。 * e)用点对点传输发布目标代码,您需要告知其他的节点目标代码和对应 的源代码在哪里按照第 6节d的条款向大众免费提供。 目标代码中可分离的部分,其源代码作为系统库不包含在对应的源代码中, 不需要包含在发布目标代码的行为中。 “用户产品”指(1)“消费品”,即通常用于个人的、家庭的或日常目的 的有形个人财产;或者(2)任何为公司设计或销售却卖给了个人的东西。在判 断一个产品是否消费品时,有疑点的案例将以有利于覆盖面的结果加以判断。对 特定用户接收到的特定产品,“正常使用”指该类产品的典型的或通常的使用, 无论该用户的特殊情况,或者该用户实际使用该产品的情况,或者该产品要求的 使用方式如何。一个产品是否是消费品与该产品是否具有实质的经济上的、工业 的或非消费品的用处无关,除非该用处是此类产品唯一的重要使用模式。 用户产品的“安装信息”指从对应源码的修改版本安装和运行该用户产品中 包含的覆盖程序的修改版本所需要的任何方法、过程、授权密钥或其他信息。这 些信息必须足以保证修改后的目标代码不会仅仅因为被修改过而不能继续运行。 如果您在本节条款下在用户产品中,或随同,或专门为了其中的使用,发布 目标代码程序,而在发布过程中用户产品的所有权和使用权都永久地或在一定时 期内(无论此项发布的特点如何)传递给了接收者,在本节所述的条款下发布的 对应的源代码必须包含安装信息。但是如果您或者任何第三方组织都没有保留在 用户产品上安装修改过的目标代码的能力(比如程序被安装在了 ROM 上),那么 这项要求不会生效。 提供安装信息的要求并没有要求为接收者修改或安装过的程序,或者修改或 安装该程序的用户产品,继续提供支持服务、担保或升级。当修改本身实际上相 反地影响了网络的运行,或者违反了网络通信的规则和协议时,网络访问可以被 拒绝。 根据本节发布的对应源代码和提供的安装信息必须以公共的文件格式发布 (并附加一个该类型文档的实现方法以源码形式向公众共享),解压缩、阅读或 复制这些信息不能要求任何密码。 7777.附加条款 “附加许可”是通过允许一些本授权的特例来补充本授权的条款。只要它们 在使用法律下合法,对整个程序都生效的附加许可就应当被认为是本授权的内 容。如果附加许可只是对本程序的一部分生效,那么该部分可以在那些许可下独 立使用,但整个程序是在本授权管理下,无论附加许可如何。 当您发布覆盖程序的副本时,您可以选择删除该副本或其部分的任何附加许 可。(当您修改程序时,附加许可可能要求在某些情况下将自身删除)。您可以 把附加许可放在材料上,加入到您拥有或能授予版权许可的覆盖程序中。 尽管本授权在别处有提供,对于您加入到程序中的材料,您可以(如果您由 该材料的版权所有者授权的话)用以下条款补充本授权: a. 拒绝担保责任或以与本授权第 15和16小节条款不同的方式限制责任; 或者 b. 要求保留特定的合理法律通告,或者该材料中或包含于适当法律通告中 的该程序的作者贡献;或者 c. 禁止误传该材料的来源,或者要求该材料的修改版本以合理的方式标志 为与原版本不同的版本;或者 d. 限制以宣传为目的的使用该材料作者或授权人的姓名;或者 e. 降低授权级别以在商标法下使用一些商品名称,商标或服务标记;或者 f. 要求任何发布该材料(或其修改版本)的人用对接收者的责任假设合同 对授权人和材料作者进行保护,避免任何这样的假设合同直接造成授权人和作者 的责任。 所有其他不许可的附加条款都被认为是第 10节中的“进一步的约束”。如 果您收到的程序或者其部分,声称自己由本授权管理,并补充了进一步约束,那 么您可以删除这些约束。如果一个授权文件包含进一步约束,但是允许再次授权 或者在本授权下发布,只要这样的进一步的约束在这样的再次授权或发布中无法 保留下来,您就可以在覆盖程序中加入该授权文件条款管理下的材料。 如果您依据本小节向覆盖程序添加条款,您必须在相关的源码文件中加入一 个应用于那些文件的附加条款的声明或者指明在哪里可以找到这些条款的通告。 附加的条款,无论是许可的还是非许可的条款,都可以写在一个单独的书面 授权中,或者申明为例外情况;这两种方法都可以实现上述要求。 8888.终止授权 您只有在本授权的明确授权下才能传播或修改覆盖程序。任何其它的传播或 修改覆盖程序的尝试都是非法的,并将自动终止您在本授权下获取的权利(包括 依据第 11节第三段条款授予的任何专利授权)。 然而,如果您停止违反本授权,那么您从某个特定版权所有者处获取的授权 许可能够以以下方式恢复(a)您可以暂时地拥有授权,直到版权所有者明确地 终止您的授权;(b)如果在您停止违反本授权后的 60天内,版权所有者没有以 某种合理的方式告知您的违背行为,那么您可以永久地获取该授权。 进一步地,如果某个版权所有者以某种合理的方式告知您违反本授权的行 为,而这是您第一次收到来自该版权所有者的违反本授权的通知(对任何软件), 并且在收到通知后 30天内修正了违反行为,那么您从该版权所有者处获取的授 权将永久地恢复。 当您的授权在本节条款下被终止时,那些从您那获取授权的组织只要保持不 违反本授权协议,其授权就不会被终止。您只有在授权被版权所有者恢复了之后 才有资格依据第 10节的条款获取该材料的新的授权。 9.9.9.9.获取副本不需要接受本授权 您不需要为了接收或运行本程序的副本而接受本授权协议。仅仅是因为点对 点传输获取副本引起传播行为,也不要求您接受本授权协议。然而,除了本授权 外,任何授权协议都不能授予您传播或修改覆盖程序的许可。因此,如果您修改 或者传播了本程序的副本,那么您就默认地接受了本授权。 10.10.10.10.下游接收者的自动授权 每次您发布覆盖程序,接收者都自动获得一份来自原授权人的依照本授权协 议运行、修改和传播该程序的授权。依据本授权,您不为执行任何第三方组织的 要求负责。 “实体事务”指转移一个组织的控制权或全部资产,或者拆分组织,或者合 并组织的事务。如果覆盖程序的传播是实体事务造成的,该事务中每一个接收本 程序副本的组织都将获取一份其前身拥有的或者能够依据前面的条款提供的任 何授权,以及从其前身获取程序对应的源代码的权利,如果前身拥有或以合理的 努力能够获取这些源代码的话。 您不可以对从本授权协议获取或确认的权利的执行强加任何约束。比如,您 不可以要求授权费用,版税要求或对从本授权获取的权利的执行收取任何费用。 您不可以发起诉讼(包括联合诉讼和反诉)声称由于制作、使用、销售、批发或 者引进本程序或其任何一部分而侵犯了任何专利权。 11111111.专利权 “贡献者”是在本授权下授予本程序或者本程序所基于的程序的使用权的版 权所有者。这样的程序被成为贡献者的“贡献者版本”。 一个贡献者的“实质的专利申明”是该贡献者所占有和控制的全部专利,无 论已经获得的还是在将来获得的,那些可能受到某种方式侵犯的专利权。本授权 允许制作、使用和销售其贡献者版本,但不包括那些只会由于对贡献者版本进一 步的修改而受到侵犯的专利的申明。为此,“控制”一词包括以同本授权要求一 致的方式给予从属授权的权利。 每个贡献者在该贡献者的实质的专利申明下授予您非独家的,全世界的,不 需要版税的专利授权,允许您制作、使用、销售、批发、进口以及运行、修改和 传播其贡献者版本内容。 在以下三个自然段中,“专利授权”指任何形式表达的不执行专利权的协议 或承诺(例如使用专利权的口头许可,或者不为侵犯专利而起诉的契约)。向一 个组织授予专利授权指做出这样的不向该组织提出强制执行专利权的承诺。 如果您在自己明确知道的情况下发布基于某个专利授权的覆盖程序,而这个 程序的对应的源代码并不能在本授权条款下通过网络服务器或其他有效途径免 费地向公众提供访问,您必须做到:(1)使对应的源代码按照上述方法可访问; 或者(2)放弃从该程序的专利授权获取任何利益;或者(3)以某种与本授权要 求一致的方法使该专利授权延伸到下游的接收者。“在自己明确知道的情况下” 指您明确地知道除了获取专利授权外,在某个国家您传播覆盖程序的行为,或者 接收者使用覆盖程序的行为,会由于该专利授权而侵犯一个或多个在该国可确认 的专利权,而这些专利权您有足够的理由相信它们是有效的。 在依照或者涉及某一次事务或安排时,如果您通过获取发布或传播覆盖程序 的传输版本,并给予接收该覆盖程序的某些组织专利授权,允许他们使用,传播, 修改或者发布该覆盖程序的特殊版本,那么您赋予这些组织的专利授权将自动延 伸到所有该覆盖程序及基于该程序的作品的接收者。 一份专利授权是“有偏见的”,如果它没有在自身所覆盖的范围内包含,禁 止行使,或者要求不执行一个或多个本授权下明确认可的权利。以下情况,您不 可以发布一个覆盖程序:如果您与软件发布行业的第三方组织有协议,而该协议 要求您根据该程序的发布情况向该组织付费,同时该组织在你们的协议中赋予任 何从您那里获得覆盖软件的组织一份有偏见的专利授权,要么(a)连同您所发 布的副本(或者从这些副本制作的副本);要么(b)主要为了并连同某个的产 品或者包含该覆盖程序的联合体。如果您签署该协议或获得该专利授权的日期早 于2007 年3月28日,那么您不受本条款约束。 本授权的任何部分不会被解释为拒绝或者限制任何暗含的授权或其他在适 用专利权法下保护您的专利不受侵犯的措施。 12121212.不要放弃别人的自由 如果您遇到了与本授权向矛盾的情况(无论是法庭判决,合同或者其他情 况),它们不能使您免去本授权的要求。如果您不能同时按照本授权中的义务和 其他相关义务来发布覆盖程序,那么您将不能发布它们。比如,如果您接受了要 求您向从您这里或许本程序的人收取版税的条款,您唯一能够同时满足本授权和 那些条款的方法是完全不要发布本程序。 13131313.和 GNUGNUGNUGNU Affero Affero Affero Affero 通用公共授权一起使用 尽管本协议有其他防备条款,您有权把任何覆盖程序和基于第三版 GNU Affero 通用公共授权的程序链接起来,并且发布该联合程序。本授权的条款仍 然对您的覆盖程序有效,但是 GNU Affero 通用公共授权第 13节关于通过网络交 互的要求会对整个联合体有效。 14141414.本授权的修订版 自由软件基金会有时候可能会发布 GNU通用软件授权的修订版本和/或新版 本。这样的新版本将会和现行版本保持精神上的一致性,但是可能会在细节上有 所不同,以处理新的问题和情况。 每个版本都有一个单独的版本号。如果本程序指出了应用于本程序的一个特 定的 GNU通用公共授权版本号“以及后续版本”,您将拥有选择该版本或任何由 自由软件基金会发布的后续版本中的条款和条件的权利。如果本程序没有指定特 定的 GNU通用公共授权版本号,那么您可以选择任何自由软件基金会已发布的版 本。 如果本程序指出某个代理可以决定将来的 GNU通用公共授权是否可以应用 于本程序,那么该代理的接受任何版本的公开称述都是您选择该版本应用于本程 序的永久认可。 后续的授权版本可能会赋予您额外的或者不同的许可。但是,您对后续版本 的选择不会对任何作者和版权所有者强加任何义务。 15151515.免责申明 在适用法律许可下,本授权不对本程序承担任何担保责任。除非是书面申明, 否则版权所有者和/或提供本程序的第三方组织,“照旧”不承担任何形式的担 保责任,无论是承诺的还是暗含的,包括但不限于就适售性和为某个特殊目的的 适用性的默认担保责任。有关本程序质量与效能的全部风险均由您承担。如本程 序被证明有瑕疵,您应承担所有必要的服务、修复或更正的费用。 16161616.责任范围 除非受适用法律要求或者书面同意,任何版权所有者,或任何依前述方式修 改和/或发布本程序者,对于您因为使用或不能使用本程序所造成的一般性、特 殊性、意外性或间接性损失,不负任何责任(包括但不限于,资料损失,资料执 行不精确,或应由您或第三人承担的损失,或本程序无法与其他程序运作等), 即便该版权所有者或其他组织已经被告知程序有此类损失的可能性也是如此。 17171717.第 15151515和16161616节的解释 如果上述免责申明和责任范围不能按照地方法律条款获得法律效力,复审法 庭应该采用最接近于完全放弃关于本程序的民事责任的法律,除非随同本程序的 责任担保或责任假设合同是收费的。 -条款和条件结束- 如何在您的新程序中应用这些条款? 如果您开发了一个新程序,并且希望能够让它尽可能地被大众使用,达成此 目的的最好方式就是让它成为自由软件。任何人都能够依据这些条款对该软件再 次发布和修改。 为了做到这一点,请将以下声明附加到程序上。最安全的作法,是将声明放 在每份源码文件的起始处,以有效传达无担保责任的讯息;且每份文件至少应有 「版权」列以及本份声明全文位置的提示。 <用一行描述程序的名称与其用途简述> 版权所有(C) <年份><作者姓名> 本程序为自由软件;您可依据自由软件基金会所发表的 GNU通用公共授权条 款,对本程序再次发布和/或修改;无论您依据的是本授权的第三版,或(您可 选的)任一日后发行的版本。 本程序是基于使用目的而加以发布,然而不负任何担保责任;亦无对适售性 或特定目的适用性所为的默示性担保。详情请参照 GNU通用公共授权。 您应已收到附随于本程序的 GNU通用公共授权的副本;如果没有,请参照 . 同时附上如何以电子及书面信件与您联系的资料。 如果程序进行终端交互方式运作,请在交互式模式开始时,输出以下提示: <程序> 版权所有(C) <年份> <作者姓名> 本程序不负任何担保责任,欲知详情请键入'show w'。 这是一个自由软件,欢迎您在特定条件下再发布本程序;欲知详情请键入 'show c'。 所假设的指令'show w'与'show c'应显示通用公共授权的相对应条款。当然, 您可以使用'show w'与'show c'以外的指令名称;对于图形用户界面,您可以用 “关于”项代实现此功能。 如有需要,您还应该取得您的雇主(若您的工作为程序设计师)或学校就本 程序所签署的“版权放弃承诺书”。欲知这方面的详情,以及如何应用和遵守 GNU通用公共授权,请参考 GNU通用公共授权并不允许您将本程序合并到私有的程序中。若您的程序是 一个子程序库,您可能认为允许私有的应用程序链接该库会更有用。如果这是您 所想做的,请使用 GNU松弛通用公共授权代替本授权。但这样做之前,请阅读

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享文档获得金币 ] 1 人已下载

下载文档

相关文档