1.Linux安裝增強功能
2.VirtualBox 分配數據空間
3.Linux中建共享文件夾掛載的目錄(如mkdir /mnt/share)
4.linux掛載共 享文件夾(sudo mount –t vboxsf [設置的共享文件夾名稱] /mnt/share)
二、Linux中虛擬windows1.windows安裝增強功能
2.VirtualBox分配數據空間
3.windows 中我的電腦右鍵-映射網絡驅動器-瀏覽-選中分配的共享文件夾
摘要: 最近用到了JFreeChart,現將實例代碼貼出來,大家可以參考一下,代碼中如有錯誤或可以改進的地方,還請大家指正。 通過下面的代碼,可以很清晰地看出JFreeChart的結構,核心即為chart, plot, XXXAxis, renderer,了解了它們的常用方法后, 會發現其實JFreeChart使用起來是很簡單方便的。廢話不多說了,還是直接看示例吧。 1.柱狀圖 ... 閱讀全文 1,apache_2.0.63-win32-x86-no_ssl.msimyeclipse中UTF-8設置
如果要使插件開發應用能有更好的國際化支持,能夠最大程度的支持中文輸出,則最好使 Java文件使用UTF-8編碼。然而,Eclipse工作空間(workspace)的缺省字符編碼是操作系統缺省的編碼,簡體中文操作系統 (Windows XP、Windows 2000簡體中文)的缺省編碼是GB18030,在此工作空間中建立的工程編碼是GB18030,工程中建立的java文件也是GB18030。如果要使 新建立工程、java文件直接使UTF-8則需要做以下工作:
1、windows->Preferences...打開"首選項"對話框,左側導航樹,導航到general->Workspace,右 側Text file encoding,選擇Other,改變為UTF-8,以后新建立工程其屬性對話框中的Text file encoding即為UTF-8。
2、windows->Preferences...打開"首選項"對話框,左側導航樹,導航到general->Content Types,右側Context Types樹,點開Text,選擇Java Source File,在下面的Default encoding輸入框中輸入UTF-8,點Update,則設置Java文件編碼為UTF-8。其他java應用開發相關的文件 如:properties、XML等已經由Eclipse缺省指定,分別為ISO8859-1,UTF-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即可。
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)類:
沒有特殊的設置
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軸的顯示特性修改不再一一介紹。
(2)3D柱狀圖
對應的工廠方法為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();
其他參考平面柱狀圖。
(2)3D線圖
對應工廠方法為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);
類RegularTimePeriod是JFreeChart提供的時間模板類,它有很多具體的時間類,比如:Minute、Second、Hour、Day……等,不再詳述。
1簡介
JFreeChart是SourceForge.net上的一個開源項目,它的源碼和API都可以免費獲得。JFreeChart的功能非常強大,可以實現餅圖(二維和三維),柱狀圖(水平,垂直),線圖,點圖,時序圖,甘特圖,股票行情圖,混和圖,溫度計圖,刻度圖等常用商用圖表,圖形可以導出成PNG和JPEG格式,同時還可以與PDF和EXCEL關聯,支持對圖形的放大、縮小,支持常見圖形的3D顯示。
2圖形對象的處理
2.1 JFreeChart對象
JFreeChart可以生成很多圖形對象,它的工廠類提供了33個工廠方法用于生成不同的圖形對象(具體的工廠方法可以參見JFreeChart的API手冊或者源碼中的ChartFactory類)。JFreechart對圖形對象的抽象具體化。圖形對象(JFreeChart),由Title(主標題),SubTitle(子標題),Plot(圖形的繪制結構)等幾個主要對象組成。各個組成部分如下圖所示:
這是一個JFreeChart對象,上面的“chart標題”是Title對象,中間區域是Plot對象(包括繪圖區域和坐標軸區域),下面的區域是LegendTitle對象,LegendTitle是一種SubTitle對象。
每個JFreeChart對象只能有1個Title對象,1個Plot對象,可以有多個SubTitle對象。JFreeChart對象可以進行的操作有:背景的設置(背景顏色、背景圖片、透明度等)、邊框的設置(是否可見、筆畫、Paint等)、渲染方式的設置、標題對象的設置、子標題對象的增刪查操作。(本文中的所有操作都不提供代碼級的介紹,可參見API手冊或者源碼)
2.2 主標題對象
主標題對象是TextTitle類型,可以進行的操作有:背景設置、字體設置(字體類型、顏色、內容、對齊方式等操作)、tooltip設置、URL設置。
2.3 Plot對象
Plot對象是圖形的繪制結構對象。JFreeChart中含有很多不同的Plot對象,每一種圖形對象中的Plot對象都在實例化的時候創建。所有的Plot共有的操作有:背景設置(背景顏色、背景圖片、透明度等)、前景透明度設置、無數據存在情況的設置(顯示的字符內容、顯示的字體、顯示的Paint)、放大縮小比例的設置,大部分Plot對象還有設置Datset、設置Renderer對象操作。
JFreeChart中有18種Plot抽象類的具體實現類。Plot的具體實現類主要由以下重要對象組成:Renderer對象(圖形的繪制單元——繪圖域),Datset(圖形的數據源),DomainAxis(區域軸,相當于x軸),RangeAxis(范圍軸,相當于y軸)。
不同的Plot對象組成方式不盡相同,有的不含有Renderer對象,比如CompassPlot、ContourPlot、MultiplePiePlot、PiePlot等,有的不含有DomainAxis、RangeAxis對象,另外除了FastScatterPlot類都含有Datset對象,FastScatterPlot使用float的二維數組充當數據源。尤其說明一點,餅狀圖相關的Plot對象(MultiplePiePlot、PiePlot、PiePlot3D、RingPlot)中都不含有Renderer對象、DomainAxis對象、RangeAxis對象。
一般來說,Datset對象存儲數據模型,Renderer對象存儲顯示模型,Plot對象根據Datset對象、Renderer對象完成畫圖操作。
仍以上面的圖形講解Plot對象的組成。
上圖的中間區域是是一個XYPlot對象。其中的折線部分即是圖形的繪制單元Renderer對象。X軸是DomainAxis,y軸是RangeAxis,其中Datset對象屬于數據模型范疇,是UI不可見對象。該圖中的plot背景色、網格線的各種設置可以通過XYPlot對象本身完成。
下面講解Renderer對象、Axis對象(X軸、y軸都屬于Axis對象),Datset對象在后續章節中專門講解。
2.3.1 Renderer對象
Renderer對象是圖形的繪制單元。JFreeChart提供了兩個接口CategoryItemRenderer和XYItemRenderer、以及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>列表,提供對該列表的增刪改查操作。
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 |
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下。