JAVA网页编程之进修JFreeChart(一)
如果你学习的是市场营销,是销售,也许参加大课堂的学习会更合适,因为你的工作能力中有个基础就是搭建自己的人脉,chart比来因为项目必要,入手下手进修JFreeChart和iText,在网上找了一下相干的材料不是良多,出格是JFreeChart在官方文档上没有像iText那样细致的申明及例子,并且官方的demo只要一个jar文件,内里也对照乱,不晓得从甚么中央动手,在网上找了几个例子,入手下手循规蹈矩的学吧!
第一个例子是个台湾人写的,良多的名词都是用的台湾说法,读过侯捷师长教师翻译的书的伴侣应当有很深的体味!进修任何一个开源的项目第一个义务就是配情况,
JFreeChart首:http://www.jfree.org/jfreechart/
JFreeChartAPI:http://www.jfree.org/jfreechart/javadoc/
今朝的版本:jfreechart-1.0.0详细的安装和classpath的设置就未几说了
下面就是该例子要天生的柱状图!代码以下:
packageHelloJChart;importjava.awt.Dimension;
importjavax.swing.JFrame;
importorg.jfree.chart.ChartFactory;importorg.jfree.chart.ChartPanel;importorg.jfree.chart.JFreeChart;importorg.jfree.chart.plot.PlotOrientation;importorg.jfree.data.category.CategoryDataset;importorg.jfree.data.category.DefaultCategoryDataset;
publicclassHelloBarChartextendsJFrame{publicHelloBarChart(){CategoryDatasetdataset=createDataset();JFreeChartchart=createChart(dataset);chart=customizeChart(chart);ChartPanelchartPanel=newChartPanel(chart);chartPanel.setPreferredSize(newDimension(500,270));getContentPane().add(chartPanel);
pack();setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}
publicstaticvoidmain(String[]args){newHelloBarChart();}
privateCategoryDatasetcreateDataset(){//rowkeys...Stringseries1="First";Stringseries2="Second";Stringseries3="Third";
//columnkeys...Stringcategory1="Category1";Stringcategory2="Category2";Stringcategory3="Category3";Stringcategory4="Category4";Stringcategory5="Category5";
//createthedataset...DefaultCategoryDatasetdataset=newDefaultCategoryDataset();
dataset.addValue(1.5,series1,category1);dataset.addValue(4.2,series1,category2);dataset.addValue(3.0,series1,category3);dataset.addValue(5.0,series1,category4);dataset.addValue(5.0,series1,category5);
dataset.addValue(5.5,series2,category1);dataset.addValue(7.8,series2,category2);dataset.addValue(6.0,series2,category3);dataset.addValue(8.0,series2,category4);dataset.addValue(4.0,series2,category5);
dataset.addValue(4.0,series3,category1);dataset.addValue(3.0,series3,category2);dataset.addValue(2.0,series3,category3);dataset.addValue(3.0,series3,category4);dataset.addValue(6.0,series3,category5);
returndataset;}
privateJFreeChartcreateChart(finalCategoryDatasetdataset){JFreeChartchart=ChartFactory.createBarChart("HelloBarChart",//charttitle"Category",//domainaxislabel"Value",//rangeaxislabeldataset,//dataPlotOrientation.VERTICAL,//orientationtrue,//includelegendtrue,//tooltips?false//URLs?);returnchart;}
privateJFreeChartcustomizeChart(finalJFreeChartchart){returnchart;}}
要创建一JFreeChart的D形次要有三步E
创建一碛匈Y料的DataSet用DataSet造JFreeChartJFreeChart作一些自的O@示JFreeChart
第一步:创建DataSet
BarChart利用的DataSet接口org.jfree.data.CategoryDataset的DataSet。有煞N体例斫CategoryDataSet
利用CategoryDataSet的子类org.jfree.data.DefaultCategoryDataset,再用addValue()把Y料到场DataSet中创建包括抵档亩S列,再利用org.jfree.data.DatasetUtilities的createCategoryDataset()
利用DefaultCategoryDataSet
DefaultCategoryDataSetclass:
publicvoidaddValue(doublevalue,java.lang.ComparablerowKey,java.lang.ComparablecolumnKey)publicvoidaddValue(java.lang.Numbervalue,java.lang.ComparablerowKey,java.lang.ComparablecolumnKey)
value-thevaluerowKey-therowkeycolumnKey-thecolumnkey
参照后面的createDataset办法!
利用org.jfree.data.DatasetUtilities
org.jfree.data.DatasetUtilitiesclass:
publicstaticCategoryDatasetcreateCategoryDataset(StringrowKeyPrefix,StringcolumnKeyPrefix,java.lang.Number[][]data)publicstaticCategoryDatasetcreateCategoryDataset(String[]rowKeys,String[]columnKeys,double[][]data)publicstaticCategoryDatasetcreateCategoryDataset(StringrowKey,KeyedValuesrowData)
rowKeyPrefix-therowkeyprefix.columnKeyPrefix-thecolumnkeyprefix.rowKeys-therowkeys.columnKeys-thecolumnkeys.data-thedata.
privateCategoryDatasetcreateDataset(){double[][]data=newdouble[][]{{1.0,43.0,35.0,58.0,54.0,77.0,71.0,89.0},{54.0,75.0,63.0,83.0,43.0,46.0,27.0,13.0},{41.0,33.0,22.0,34.0,62.0,32.0,42.0,34.0}};returnDatasetUtilities.createCategoryDataset("Series","Factor",data);}
第二步:造JFreeChart
要用DataSet造出一JFreeCharte,我K不间接w化出一JFreeChartw,而是利用ChartFactoryee面的办法。
ChartFactoryclass:
publicstaticJFreeChartcreateBarChart(java.lang.Stringtitle,java.lang.StringcategoryAxisLabel,java.lang.StringvalueAxisLabel,CategoryDatasetdata,PlotOrientationorientation,booleanlegend,booleantooltips,booleanurls)
title-thecharttitle.categoryAxisLabel-thelabelforthecategoryaxis.valueAxisLabel-thelabelforthevalueaxisdata-thedatasetforthechart.orientation-theplotorientation(PlotOrientation.HORIZONTALorPlotOrientation.VERTICAL).legend-aflagspecifyingwhetherornotalegendisrequired.tooltips-configurecharttogeneratetooltips?urls-configurecharttogenerateURLs?
privateJFreeChartcreateChart(finalCategoryDatasetdataset){JFreeChartchart=ChartFactory.createBarChart("HelloBarChart",//标题
"Category",//行称号
"Value",//列称号
dataset,//数据
PlotOrientation.VERTICAL,//横向,纵向
true,//图例
true,//柱状申明false//URLs?);returnchart;}
第三步:修JFreeChart
@例中K]有JFreeChart作修。
privateJFreeChartcustomizeChart(finalJFreeChartchart){returnchart;}
第四步:@示JFreeChart
ChartPanel是一^承JPanel的e,把JFreeChart在贸淌街酗@示出怼N只需把JFreeChart成鹘oChartPanel的建子。造出ChartPanel的w後,O定巨细,再成一样平常的Panel放进ContentPane中就能够了。
ChartPanelclass:
publicChartPanel(JFreeChartchart)publicChartPanel(JFreeChartchart,booleanuseBuffer)publicChartPanel(JFreeChartchart,booleanproperties,booleansave,booleanprint,booleanzoom,booleantooltips)publicChartPanel(JFreeChartchart,intwidth,intheight,intminimumDrawWidth,intminimumDrawHeight,intmaximumDrawWidth,intmaximumDrawHeight,booleanuseBuffer,booleanproperties,booleansave,booleanprint,booleanzoom,booleantooltips)
chart-thechart.useBuffer-aflagcontrollingwhetherornotanoff-screenbufferisused.properties-aflagindicatingwhetherornotthechartpropertyeditorshouldbeavailableviathepopupmenu.save-aflagindicatingwhetherornotsaveoptionsshouldbeavailableviathepopupmenu.print-aflagindicatingwhetherornottheprintoptionshouldbeavailableviathepopupmenu.zoom-aflagindicatingwhetherornotzoomoptionsshouldbeaddedtothepopupmenu.tooltips-aflagindicatingwhetherornottooltipsshouldbeenabledforthechart.width-thepreferredwidthofthepanel.height-thepreferredheightofthepanel.minimumDrawWidth-theminimumdrawingwidth.minimumDrawHeight-theminimumdrawingheight.maximumDrawWidth-themaximumdrawingwidth.maximumDrawHeight-themaximumdrawingheight.
publicHelloBarChart(){CategoryDatasetdataset=createDataset();JFreeChartchart=createChart(dataset);chart=customizeChart(chart);ChartPanelchartPanel=newChartPanel(chart);chartPanel.setPreferredSize(newDimension(500,270));getContentPane().add(chartPanel);pack();setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}
至此第一个例子已进修终了,基础懂得了JFreeChart的一些基础手艺!上面再进修一个柱状图的例子
首先java功能强大的背后是其复杂性,就拿web来说,当今流行的框架有很多,什么struts,spring,jQuery等等,而这无疑增加了java的复杂性。 你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。 Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。 关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。 你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢? J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。 是一种使用者不需花费很多时间学习的语言 《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。 是一种使网页(Web Page)产生生动活泼画面的语言 Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站 是一种使网页(Web Page)产生生动活泼画面的语言 是一种语言,用以产生「小应用程序(Applet(s)) 让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。 学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。 《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。 如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从 设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
页:
[1]