posts - 32,  comments - 3,  trackbacks - 0
 
一、windows中虚拟Linux

1.Linux安装增强功能

2.VirtualBox 分配数据空间

3.Linux中建共享文件夹挂载的目录(如mkdir /mnt/share)

4.linux挂载共 享文件夹(sudo mount –t vboxsf [设置的共享文件夹名称]  /mnt/share)

二、Linux中虚拟windows

1.windows安装增强功能

2.VirtualBox分配数据空间

3.windows 中我的电脑右键-映射网络驱动器-浏览-选中分配的共享文件夹

posted @ 2010-08-09 23:12 donghang73 阅读(201) | 评论 (0)编辑 收藏
     摘要: 最近用到了JFreeChart,现将实例代码贴出来,大家可以参考一下,代码中如有错误或可以改进的地方,还请大家指正。 通过下面的代码,可以很清晰地看出JFreeChart的结构,核心即为chart, plot, XXXAxis, renderer,了解了它们的常用方法后, 会发现其实JFreeChart使用起来是很简单方便的。废话不多说了,还是直接看示例吧。   1.柱状图 ...  阅读全文
posted @ 2010-07-25 22:44 donghang73 阅读(4454) | 评论 (1)编辑 收藏
1,apache_2.0.63-win32-x86-no_ssl.msi
下载:http://apache.mirror.phpchina.com/httpd/binaries/win32/apache_2.0.63-win32-x86-no_ssl.msi
2,svn-1.4.5-setup.exe
下载地址:http://subversion.tigris.org/files/documents/15/39559/svn-1.4.5-setup.exe
当然,你也可以选择安装TortoiseSVN.但是我没有装,因为我的源码管理都是用netbeans完成的.

好了,准备的两个软件都下载下来以后,就可以开始安装了.
首先安装apache,一般来说直接点下一步就可以了,在设置domain以及host的时候,设置为localhost就可以了,Email你可以填你自己的Email,也可以随便填一个.安装apache要注意的是,你的电脑上80端口不能被占用, 否则你的http服务是启动不起来的,我就遇到过这事,因为我用了skype,它在本机上打开了80和443端口来监听,搞得我一开始装不好,总是启动不起来,后来才发现是skype占用了80端口,于是把skype的设置改了以后,重装apache才成功.装好apache以后,这个时候,它已经在运行了,你可以在浏览器的地址栏输入http://localhost看看,是否安装成功,如果安装成功的话,这个时候浏览器里面应该是可以看到一个页面的.
然后,再安装svn-1.4.5-setup.exe,也很简单,一步一步点下步就可以了, 在安装的过程中,它会默认选中一些选项,其中就有一个是是否对apache的HTTP服务器提供支持的选项,这个默认是勾上的,不要去反选它,其它的你可以反选掉.然后svn就宣布安装成功了.你可以到CMD下面去试一下svn这个命令,如果有输出,则说明安装成功了,如果提示svn 不是内部或外部命令,也不是可运行的程序或批处理文件。那就说明没有装好.或者没有把这个命令加入到path中,所以最好的办法是到svn的安装目录下的 bin里面去看一下.
两者都装好了以后,就开始配置,当然,配置也是最重要的.
首先要建立一个数据仓库,我们假设建在E盘,数据仓库最好不要建在C盘,因为C盘重装系统以后就格了.我们先在E盘下面建立一个目录叫svnroot,然后在svnroot下面再建立一个我们专门放我们工程的目录,比如叫MyProject.于是我们在E盘下面就有了这个一个文件夹:E:\svnroot\MyProject, 然后我们用svnadmin的命令,使这个文件夹变成我们的数据仓库,命令如下:
svnadmin create E:\svnroot\MyProject
如果运行成功的话,什么也没有输出,这个时候,我们再来到MyProject文件夹下面,我们会发现多了几个文件夹和文件,我们打开conf文件夹,然后再打开svnserve.conf文件,找到如下行# password-db = passwd,然后把它前面的#去掉,表示MyProject是需要密码验证的.但是我们密码设在哪里呢,这个时候我们再打开conf文件夹下面的 passwd文件,用文本编辑器打开,在[users]下面加上我们需要启动的人员的用户和密码,比如
[users]
hadeslee=hadeslee1234
tom=123456

这个的话,我们就启动了两个用户,一个叫hadeslee,密码是hadeslee1234,一个叫tom,密码是123456.然后我们保存passwd文件.然后,我们再建一个文件,叫access.auth,这个文件是设置访问权限的,里面内容如下:
[MyProject:/]
hadeslee = rw
[MyProject:/module1]
tom=rw
hadeslee=rw

这表示,MyProject下面的所有子目录hadeslee都是有权限读写的,但是tom只有权限读写此项目下面的module1目录,这个各自的访问权限就分的更细致了.有关于MyProject文件夹下面的设置,我们就告一段落了,我们现在开始设置apache,使它能和subvertion一起工作.

首先来到Subersion的安装目录,进入它的bin目录,我们会发现如下两个文件:
mod_authz_svn.so
mod_dav_svn.so

我们把这两个文件复制一下,粘帖到 apache的安装目录下的modules文件中,然后我们再打开apache安装目录下的conf文件夹,打开httpd.conf文件.增加如下两行:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

注意,由于dav_svn需要dav_module的支持,所以要确保下面这一行没有被注释,并且保证在dav_svn之前加载:
LoadModule dav_module modules/mod_dav.so
然后模块的设置就完成了,下面我们要设置SVN的目录,以使我们的apache能知道访问不同的URL的时候,它去哪里寻找这个URL所对应的SVN目录.
httpd.conf文件中,增加如下内容:
<Location /svn/MyProject>
DAV svn
SVNPath E:/svnroot/MyProject

AuthzSVNAccessFile E:/svnroot/MyProject/conf/access.auth
Satisfy Any
Require valid-user

AuthType Basic
AuthName "Subversion repositories"
AuthUserFile  E:/svnroot/MyProject/conf/users.auth
Require valid-user
</Location>


添加完上面这些,我们会发现access.auth是我们刚才新建的,可是users.auth我们并没有新建啊.怎么就把它加进去了.不要急,现在我们就来生成users.auth文件.

进入 apache的安装目录的bin文件夹,输入如下命令:

D:\Program Files\Apache Group\Apache2\bin>htpasswd -cb users.auth hadeslee hadeslee1234
Automatically using MD5 format.
Adding password for user hadeslee

D:\Program Files\Apache Group\Apache2\bin>

我们就会发现在bin目录生成了users.auth,我们可以看到,hadeslee用户名已经被添加进去了,密码是用MD5加密过的.然后我们还要增加用户呢,可以用如下方法:
D:\Program Files\Apache Group\Apache2\bin>htpasswd -b users.auth tom 123456
Automatically using MD5 format.
Adding password for user tom

D:\Program Files\Apache Group\Apache2\bin>


只是在生成密码的时候,小了一个c的参数,因为c表示重新生成一个这样的文件,我们第一次的时候是要加的,后面我们要添加用户的时候,就不用这个c了.然后打开users.auth,会发现两个用户都已经在里面了,这个时候,我们把users.auth移到E:/svnroot/MyProject/conf/里面去,使我们上面的设置生效.

这个时候,我们的设置就完成了.可以在浏览器里面输入http://localhost/svn/MyProject试试看.

如果以后我们还要加入其它的项目呢,可以有两点解决方式
1,把以后的项目也导入到我们的MyProject的仓库中,这个的话,就不用改什么配置了
2,新建一个数据仓库,然后只要按上面的步骤,把新的<Location...>设置放到 httpd.conf里面就可以了.
当然,验证文件,访问权限文件,还有访问SVN的密码都要自己按上面的方法再设一遍.

祝大家能够设置成功:)

转自:http://www.blogjava.net/hadeslee/archive/2008/03/12/185788.html
posted @ 2010-07-25 22:17 donghang73 阅读(204) | 评论 (0)编辑 收藏
1、下载jadclipse插件
注意:jadclipse_3.1.0.jar版本,该版本支持eclipse3.1M6~3.2M2
      jadclipse_3.2.0.jar版本,该版本支持eclipse3.2M3和eclipse3.2M4.
      jadclipse_3.2.4.jar版本,该版本支持eclipse3.2M5~3.3M5
      jadclipse_3.3.0.jar版本,该版本支持eclipse3.3M6及以上

2、下载jad.exe,并将下载好的jad.exe拷贝到jre的bin的目录下,或者把jad的执行文件的绝对路径加入到环境变量PATH中。

3、配置jadClipse,在在%ECLIPSE_HOME%\目录下建立myplugins\jadclipse\eclipse\plugins的目录结构,将jadclipse_3.3.0.jar(用于Eclipse3.5)放到plugins目录下面,再在%ECLIPSE_HOME%\links目录下面建立jadclipse.link的文件(名字可以随便取),jadclipse.link的内容为:path=..\\jadclipse(注意一定要双反斜杠"\\")

4、重新启动eclipse,查看 window->preferences->java->jadClipse,如果出现jadClipse则说明上述配置成功,否则检查上述配置。

5、Path to decomplier:指定反编译工具的jad文件所在的位置。(可以指定为jre的bin的目录下的jad.exe)

6、把*.class文件的associated editors设置为jadClipse Class File Viewer做为默认项


另:批量反编译
在cmd中,进入到class文件所在路径下,输入命令:jad -o -r -s java -d src *.class
       参数的含义:
       -o:覆盖旧文件,而且不用提示确认。
       -r:重新加载生成包结构。
       -s:定义输出文件的扩展名。jad为默认扩展名,我们反编译后当然是要.java源文件了。
       -d:输出文件的目录。src表示反编译后的所有文件都放在src目录下。
       *.class:指定解析该文件夹下的所有以.class结尾的文件,即解析class文件
posted @ 2010-07-22 22:05 donghang73 阅读(1004) | 评论 (0)编辑 收藏

myeclipseUTF-8设置

   如果要使插件开发应用能有更好的国际化支持,能够最大程度的支持中文输出,则最好使 Java文件使用UTF-8编码。然而,Eclipse工作空间(workspace)的缺省字符编码是操作系统缺省的编码,简体中文操作系统 (Windows XPWindows 2000简体中文)的缺省编码是GB18030,在此工作空间中建立的工程编码是GB18030,工程中建立的java文件也是GB18030。如果要使 新建立工程、java文件直接使UTF-8则需要做以下工作:

 

1windows->Preferences...打开"首选项"对话框,左侧导航树,导航到general->Workspace,右 Text file encoding,选择Other,改变为UTF-8,以后新建立工程其属性对话框中的Text file encoding即为UTF-8


2windows->Preferences...打开"首选项"对话框,左侧导航树,导航到general->Content Types,右侧Context Types树,点开Text,选择Java Source File,在下面的Default encoding输入框中输入UTF-8,点Update,则设置Java文件编码为UTF-8。其他java应用开发相关的文件 如:propertiesXML等已经由Eclipse缺省指定,分别为ISO8859-1UTF-8,如开发中确需改变编码格式则可以在此指定。


3经过上述两步,新建java文件即为UTF-8编码,Eclipse编译、运行、调试都没问题,但是做RCP应用的Product输出时、或者插件 输出时,则总是出错,要么不能编译通过(输出时要重新compile)、要么输出的插件运行时中文显示乱码。此时需要再RCP应用、或插件Plugin 程的build.properties中增加一行,javacDefaultEncoding.. = UTF-8。让输出时编译知道java源文件时UTF-8编码。这个设置需要保证所有的java源文件时UTF-8编码格式,如果不全是,可以参考 Eclipse帮中(Plug-in Development Environment Guide > Reference > Feature and Plug-in Build configuration),建议全部java源文件是UTF-8编码。

   如果插件开发、RCP应用开发原来基于其他编码,如GB18030,想转换为UTF-8,则首先,做以上工作;然后通过查找编码转换工具,如基于 iconv的批量转换工具,将原编码转换为UTF-8编码,注意只转换java源文件,其他类型文件可能已经是比较合适的编码了;将原工程属性中的 Text file encoding,从原编码改为UTF-8即可。

posted @ 2010-07-20 22:03 donghang73 阅读(7940) | 评论 (0)编辑 收藏

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)类:
没有特殊的设置

posted @ 2010-07-20 20:35 donghang73 阅读(2721) | 评论 (0)编辑 收藏
         JFreeChart并不存在多个不同的类来生成不同的图形。所有的图形都是具体类JFreeChart的实例化对象,初始化JFreeChart对象的时候通过指定不同的Plot实现类就可以显示出不同的图形。不同的Plot实现类具有不同的Renderer对象、Axis对象、Dataset对象。

       JFreeChart提供工厂类ChartFactory方便使用者生成各种不同的图形。ChartFactory类的各个工厂方法中实现对具体Plot的指定以及对类JFreeChart构造函数的调用。

    下面以常用图形说一下常用的使用流程(大部分的操作讲的并不全面,比如JFreeChart可能提供了很多增加、修改数据的方式,下文中可能只列举一种)。

1柱状图

1)平面柱状图

    生成柱状图操作:

JFreeChartchart=ChartFactory.createBarChart(String title,//图标题

String categoryAxisLabel,//x轴标题

String valueAxisLabel,//y轴标题

CategoryDataset dataset,//数据源

PlotOrientation orientation,//显示方向

Boolean legend,//是否显示图例

Boolean tooltips,//是否显示tooltip

Boolean urls)//是否指定url

平面柱状图的Plot对象是CategoryPlot类型。CategoryPlot对象的x轴是CategoryAxis对象,y轴是NumberAxis对象,绘制单元是BarRenderer对象,数据源是CategoryDataset对象。

获取CategoryPlot对象操作为:

CategoryPlot plot = (CategoryPlot)chart.getPlot();或者

CategoryPlot plot = chart.getCategoryPlot();

获取绘制单元操作:

       BarRenderer renderer = (BarRenderer)plot.getRenderer();

获取x轴的操作:

CategoryAxis xAxis = (CategoryAxis)plot.getDomainAxis();

获取y轴操作:

NumberAxis yAxis = (NumberAxis)plot.getRangeAxis();

获取数据源:

CategoryDataset dataset = plot.getDataset();

    柱状图可以接受一切CategoryDataset类型的数据源,下面讲解一下常用的CategoryDataset类型DefaultCategoryDataset的使用方式

实例化:

DefaultCategoryDataset dataset = new DefaultCategoryDataset();

增加数据

dataset.addValue(doublevalue,ComparablerowKey,ComparablecolumnKey);

删除数据:

       dataset.removeValue(ComparablerowKey,ComparablecolumnKey);

    或者

       dataset.removeColumn(intcolumnIndex);

    或者

       dataset.removeColumn(ComparablecolumnKey);

    对行同样有上述两种删除方式,不在列举。

修改数据:

       dataset.setValue(doublevalue,ComparablerowKey,ComparablecolumnKey);

查询数据:

plot对象、绘制单元、x轴、y轴的显示特性修改不再一一介绍。

23D柱状图

    对应的工厂方法为createBarChart3D,该方法的参数与平面柱状图相同。3D柱状图的Plot对象是CategoryPlot类型。CategoryPlot对象的x轴是CategoryAxis3D对象,y轴是NumberAxis3D对象,绘制单元是BarRenderer3D对象,数据源是CategoryDataset对象。

    具体使用以及操作与平面柱状图雷同,不在详述。

2饼状图

(1)平面饼状图

生成平面饼状图:

JFreeChartchart=ChartFactory.createPieChart(String title,//图标题

PieDataset dataset,//数据源

Boolean legend,//是否显示图例

Boolean tooltips,//是否显示tooltip

Boolean urls)//是否指定url

平面饼状图的Plot对象是PiePlot类型。PiePlot对象没有x轴对象、y轴对象、绘制单元对象,数据源是PieDataset对象。

获取PiePlot对象操作为:

PiePlot plot = (PiePlot)chart.getPlot();

获取数据源:

PieDataset dataset = plot.getDataset();

饼状图可以接受一切PieDataset类型的数据源,下面讲解一下常用的PieDataset类型DefaultPieDataset的使用方式

实例化:

    DefaultPieDatasetdataset=newDefaultPieDataset();

增加修改操作:

    dataset.setValue(Comparablekey,doublevalue);

删除操作:

    dataset.remove(Comparablekey);

查询操作:

    dataset.getKey(intitem);

或者

dataset.getValue(intitem);

(1)3D饼状图

    对应的工厂方法为createPieChart3D,参数与平面饼状图相同。与平面饼状图的差别在于Plot对象是PiePlot3D类型,不再详述。

3多重饼状图

1)多重平面饼状图

生成多重平面饼状图:

JFreeChartchart=ChartFactory.createMultiplePieChart (String title,//图标题

CategoryDataset dataset,//数据源

TableOrder order,//指定提取数据的方式(按行或者按列)

Boolean legend,//是否显示图例

boolean tooltips,//是否显示tooltip

boolean urls)   //是否指定url

多重平面饼状图的Plot对象是MultiplePiePlot类型。MultiplePiePlot对象没有x轴对象、y轴对象、绘制单元对象,数据源是CategoryDataset对象。MultiplePiePlot对象中可以含有多个子JFreeChart对象,子JFreeChart对象是上面讲过的饼状图对象。

获取MultiplePiePlot对象操作为:

MultiplePiePlot plotMain = (MultiplePiePlot)chart.getPlot();

获取子JFreeChart的操作为:

       JfreeChart childChart = plotMain.getPieChart();

获取数据源:

CategoryDataset dataset = plotMain.getDataset();

2)多重3D饼状图

    对应的工厂方法为createMultiplePieChart3D,该方法的参数与多重平面饼状图相同。多重3D饼状图的Plot对象是MultiplePiePlot类型。MultiplePiePlot对象中可以含有多个子JFreeChart对象,子JFreeChart对象是上面讲过的3D饼状图对象。

4线图

1)平面线图

    生成平面线图:

JFreeChartchart=ChartFactory.createLineChart(String title,//图标题

String categoryAxisLabel,//x轴标题

String valueAxisLabel,//y轴标题

CategoryDataset dataset,//数据源

PlotOrientation orientation,//显示方向

Boolean legend,//是否显示图例

Boolean tooltips,//是否显示tooltip

Boolean urls);//是否指定url

平面线图除了的Plot对象中绘制单元对象是LineAndShapeRenderer对象,其他一切组成对象与平面柱状图相同。

获取Renderer操作:

LineAndShapeRenderer renderer = (LineAndShapeRenderer)plot.getRenderer();

其他参考平面柱状图。

23D线图

对应工厂方法为createLineChart3D,参数与createLineChart相同。3D线图的组成对象除了绘制单元对象是LineAndShapeRenderer3D对象,其他一切组成对象与3D柱状图相同。

5时序图

生成时序图:

JfreeChartchart = ChartFactory.createTimeSeriesChart(String title,//图标题

String timeAxisLabel,//x轴标题

String valueAxisLabel,//y轴标题

XYDataset dataset,//数据源

Boolean legend,//是否显示图例

Boolean tooltips,//是否显示tooltip

Boolean urls);//是否指定url

时序图的Plot对象是XYPlot类型。XYPlot对象的x轴是DateAxis对象,y轴是NumberAxis对象,绘制单元是XYLineAndShapeRenderer对象,数据源是XYDataset对象。

Plot对象的获取操作:

       XYPlot plot = (XYPlot)chart.getPlot();

X轴对象的获取操作:

       DateAxis xAxis = (DateAxis)plot.getDomainAxis();

Y轴对象的获取操作:

       NumberAxis yAxis = (NumberAxis)plot.getRangeAxis();

Renderer对象的获取操作:

       XYItemRenderer renderer = plot.getRenderer();

时序图可以接受一切XYDataset类型的数据源,下面讲解一下常用的XYDataset类型TimeSeriesCollection的使用方式。

实例化:

       TimeSeriesCollection dataset = newTimeSeriesCollection();

添加数据操作:

       dataset.addSeries(TimeSeries);//后面讲解TimeSeries对象

删除数据操作:

       dataset.removeSeries(intindex);

查询数据操作:

       dataset.getSeries(intseries);

TimeSeries对象操作

实例化:

       TimeSeries ts = TimeSeries(Stringname,ClasstimePeriodClass);

增加数据操作:

       ts.add(RegularTimePeriod period,double value);

删除数据操作:

       ts.delete(RegularTimePeriod period);

修改数据操作:

       ts.update(RegularTimePeriod period,Number value);

查询数据操作:

    ts.getValue(RegularTimePeriodperiod);

RegularTimePeriodJFreeChart提供的时间模板类,它有很多具体的时间类,比如:MinuteSecondHourDay……等,不再详述。

posted @ 2010-07-20 20:33 donghang73 阅读(1208) | 评论 (0)编辑 收藏

 

1简介

JFreeChartSourceForge.net上的一个开源项目,它的源码和API都可以免费获得。JFreeChart的功能非常强大,可以实现饼图(二维和三维),柱状图(水平,垂直),线图,点图,时序图,甘特图,股票行情图,混和图,温度计图,刻度图等常用商用图表,图形可以导出成PNGJPEG格式,同时还可以与PDFEXCEL关联,支持对图形的放大、缩小,支持常见图形的3D显示。

2图形对象的处理

2.1 JFreeChart对象

JFreeChart可以生成很多图形对象,它的工厂类提供了33个工厂方法用于生成不同的图形对象(具体的工厂方法可以参见JFreeChartAPI手册或者源码中的ChartFactory)。JFreechart对图形对象的抽象具体化。图形对象(JFreeChart),由Title(主标题)SubTitle(子标题)Plot(图形的绘制结构)等几个主要对象组成。各个组成部分如下图所示:
   
    
这是一个JFreeChart对象,上面的“chart标题”是Title对象,中间区域是Plot对象(包括绘图区域和坐标轴区域),下面的区域是LegendTitle对象,LegendTitle是一种SubTitle对象。

每个JFreeChart对象只能有1Title对象,1Plot对象,可以有多个SubTitle对象。JFreeChart对象可以进行的操作有:背景的设置(背景颜色、背景图片、透明度等)、边框的设置(是否可见、笔画、Paint等)、渲染方式的设置、标题对象的设置、子标题对象的增删查操作。(本文中的所有操作都不提供代码级的介绍,可参见API手册或者源码)

2.2 主标题对象

主标题对象是TextTitle类型,可以进行的操作有:背景设置、字体设置(字体类型、颜色、内容、对齐方式等操作)、tooltip设置、URL设置。

2.3 Plot对象

Plot对象是图形的绘制结构对象。JFreeChart中含有很多不同的Plot对象,每一种图形对象中的Plot对象都在实例化的时候创建。所有的Plot共有的操作有:背景设置(背景颜色、背景图片、透明度等)、前景透明度设置、无数据存在情况的设置(显示的字符内容、显示的字体、显示的Paint)、放大缩小比例的设置,大部分Plot对象还有设置Datset、设置Renderer对象操作。

JFreeChart中有18Plot抽象类的具体实现类。Plot的具体实现类主要由以下重要对象组成:Renderer对象(图形的绘制单元——绘图域),Datset(图形的数据源),DomainAxis(区域轴,相当于x轴),RangeAxis(范围轴,相当于y轴)。

不同的Plot对象组成方式不尽相同,有的不含有Renderer对象,比如CompassPlotContourPlotMultiplePiePlotPiePlot等,有的不含有DomainAxisRangeAxis对象,另外除了FastScatterPlot类都含有Datset对象,FastScatterPlot使用float的二维数组充当数据源。尤其说明一点,饼状图相关的Plot对象(MultiplePiePlotPiePlotPiePlot3DRingPlot)中都不含有Renderer对象、DomainAxis对象、RangeAxis对象。

一般来说,Datset对象存储数据模型,Renderer对象存储显示模型,Plot对象根据Datset对象、Renderer对象完成画图操作。


    仍以上面的图形讲解
Plot对象的组成。
上图的中间区域是是一个XYPlot对象。其中的折线部分即是图形的绘制单元Renderer对象。X轴是DomainAxisy轴是RangeAxis,其中Datset对象属于数据模型范畴,是UI不可见对象。该图中的plot背景色、网格线的各种设置可以通过XYPlot对象本身完成。

    下面讲解Renderer对象、Axis对象(X轴、y轴都属于Axis对象),Datset对象在后续章节中专门讲解。

2.3.1 Renderer对象

Renderer对象是图形的绘制单元。JFreeChart提供了两个接口CategoryItemRendererXYItemRenderer、以及1个抽象类AbstractRenderer供具体的Renderer类实现,给出了将近50种具体实现类。

一般来说Renderer对象可进行的操作有:对itemlabel(下图中的柱状图上的红色数字即为itemlabel的示例)的默认设置(itemlabel的产生方式、是否可见、字体、Paint、正反向itemlabel的位置设置等)、绘制图形的边框默认设置(Paint、笔画、是否可见等)、绘制图形的默认设置(形状、笔画、是否可见、对应的图例中是否可见等,折线图还有线条是否可见、折点图形是否可见、折点图形是否填充、折点图形的形状、对应的图例中线条是否可见、图形是否可见、整体是否可见等)、以及对指定itemlabel的设置、指定绘制图形的设置。可以说和具体绘制的图形相关的属性都可以通过Renderer对象设置。

不同的Renderer的实现类实现了不同的显示方式,在含有Renderer对象的JFreeChart对象中,Renderer对象决定了JFreeChart对象的显示方式。例如:柱状图的Plot对象中默认的Renderer对象是CategoryItemRenderer对象,通过设置Plot对象的Renderer对象LineAndShapeRenderer,则柱状图变为线图。使用中一般不需要显式的实例化一个Renderer对象,一般通过JFreeChart对象的Plot对象调用现有的Renderer对象进行重新设置等操作。

2.3.2 Axis对象

JFreeChart提供了两种类型的坐标轴:CategoryAxis(等级轴)和ValueAxis(值轴),ValueAxis又有3个子类:DateAxis(时间轴)、NumberAxis(数字轴)、PeriodAxis(时期轴)。这些坐标轴还有更详细的子类,不再一一列举

Axis对象可进行的操作有:标题的设置(内容、字体、Paint、显示角度等)、坐标线的设置(笔画、Paint、是否可见等)、刻度线的设置(是否可见、笔画、Paint、位于绘图区域的长度、位于绘图区域外的长度等)、刻度标示的设置(笔画、Paint、字体、与轴的距离等)、坐标轴范围设置等。

CategoryAxis对象还可以进行的操作有:刻度标示间距设置(最小间距、最大间距、指定间距)等。

ValueAxis对象可进行的操作有:轴端设置(显示的图形形状)、范围设置(是否自动产生范围、自动产生的最小范围、最大范围、指定确定范围、指定范围大小等)、间隔设置(是否自动产生间隔、指定间隔)等。

DateAxis对象还有对时间刻度显示格式的设置操作。

2.4 子标题对象

    子标题对象是Title类型的对象,一个JFreeChart可以有多个子标题对象。JFreeChart提供了5种Title的实现,可以是图片、文本、图例等的形式。

2.5数据源处理

JFreeChart中的数据源是DataSet接口类型。该接口有三个主要的子类接口:CategoryDataset、PieDataset、SeriesDataset

CategoryDataset接口的实现类基本上都维护了一个三元组<value,row,col>的列表结构。不同的实现类中value的类型不相同。<row,col>唯一确定一个三元组。CategoryDataset的实现类提供对这个三元组的增删改查操作。

PieDataset接口有两个主要的实现类:CategoryToPieDataset、DefaultPieDataset。

SeriesDataset接口的实现类基本上都维护了一种特定数据结构的列表。以TimeSeriesCollection为例。它维护一个TimeSeries对象列表,提供对该列表的增删查操作。每个TimeSeries对象维护一个<time,value>列表,提供对该列表的增删改查操作。

posted @ 2010-07-20 20:29 donghang73 阅读(1498) | 评论 (0)编辑 收藏

public class SimpleDateFormat extends DateFormat
SimpleDateFormat 是一个以国别敏感的方式格式化和分析数据的具体类。 它允许格式化 (date -> text)、语法分析 (text -> date)和标准化。

SimpleDateFormat 允许以为日期-时间格式化选择任何用户指定的方式启动。 但是,希望用 DateFormat 中的 getTimeInstance、 getDateInstance 或 getDateTimeInstance 创建一个日期-时间格式化程序。 每个类方法返回一个以缺省格式化方式初始化的日期/时间格式化程序。 可以根据需要用 applyPattern 方法修改格式化方式。

SimpleDateFormat函数的继承关系:
java.lang.Object
   |
   +----java.text.Format
           |
           +----java.text.DateFormat
                   |
                   +----java.text.SimpleDateFormat
字母 日期或时间元素 表示 示例
G Era 标志符 Text AD
y Year 1996; 96
M 年中的月份 Month July; Jul; 07
w 年中的周数 Number 27
W 月份中的周数 Number 2
D 年中的天数 Number 189
d 月份中的天数 Number 10
F 月份中的星期 Number 2
E 星期中的天数 Text Tuesday; Tue
a Am/pm 标记 Text PM
H 一天中的小时数(0-23) Number 0
k 一天中的小时数(1-24) Number 24
K am/pm 中的小时数(0-11) Number 0
h am/pm 中的小时数(1-12) Number 12
m 小时中的分钟数 Number 30
s 分钟中的秒数 Number 55
S 毫秒数 Number 978
z 时区 General time zone Pacific Standard Time; PST; GMT-08:00
Z 时区 RFC 822 time zone -0800

一个小例子,帮助更好的理解SimpleDataFormat

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class TestSimpleDataFormat {
    
public static void main(String[] args) 
        SimpleDateFormat myFmt 
= new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒"); 
        SimpleDateFormat myFmt1 
= new SimpleDateFormat("yy/MM/dd HH:mm"); 
        SimpleDateFormat myFmt2 
= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//等价于now.toLocaleString() [depreciated]
        SimpleDateFormat myFmt3 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E "); 
        SimpleDateFormat myFmt4 
= new SimpleDateFormat("一年中的第 D 天|一年中第w个星期 |一月中第W个星期|在一天中k时 z时区");
        
        
//格式化示例
        Date now=new Date(); 
        System.out.println(myFmt.format(now)); 
        System.out.println(myFmt1.format(now)); 
        System.out.println(myFmt2.format(now)); 
        System.out.println(myFmt3.format(now)); 
        System.out.println(myFmt4.format(now)); 
        System.out.println(now.toString()); 
        
        
//解析示例
        SimpleDateFormat myFmt5 = new SimpleDateFormat("yyyy/MM/dd HH"); 
        String time 
= "2010/08/02 00";
        
try {
            Date datatime 
= myFmt5.parse(time);
            System.out.println(datatime);
        }
 catch (ParseException e) {
            e.printStackTrace();
        }

        
    }

}

posted @ 2010-07-13 21:39 donghang73 阅读(1218) | 评论 (0)编辑 收藏
网上很多人都说J2EE5兼容性不好,例如典型的javamail1.4中包与J2EE5中包接口包引起冲突,导致单元测试经常报如下错误:

    java.lang.NoClassDefFoundError: com/sun/mail/util/BEncoderStream

    当然这个错误是没有将javamail的实现者引进工程(没有导包),但导包后,就会出现另外一个错误:

    java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream

    此时甚至web容器都无法启动,经常会有网友们为这两个异常搞得焦头烂额,如此更换J2EE1.4,会对工程造成影响。但是一定要把概念弄清楚,问题就好 解决。J2EE5中mail.jar包定义的只是接口,没有实现,是不能真正发送邮件的,但开发编译肯定是可以过去的,因为我们是针对J2EE规范编的程 序。而运行期用Sun公司的JavaMail1.4的实现才可以开始发送邮件,但老大为什么把这两个弄冲突了?

    笔者的解决办法是:

    开发期不要导包,运行期将javamail1.4压缩文件中的mail.jar包放入到tomcat"lib目录下,这样完全可以通过开发和运行。若要做 单元测试则新开一个Java Project,注意,不是web工程,此时可以将javamail1.4压缩包中的mail.jar放入到工程的classpath下。

posted @ 2010-06-03 13:36 donghang73 阅读(6822) | 评论 (0)编辑 收藏
仅列出标题
共4页: 上一页 1 2 3 4 下一页