- 浏览: 3117909 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (372)
- diy (4)
- linux (19)
- 杂项 (30)
- Swing (21)
- Java2D (21)
- Java3D (5)
- JavaIO (9)
- Java通讯 (5)
- Java设计模式 (3)
- Java多媒体 (0)
- Java算法 (7)
- Spring&EJB (29)
- Javaoffice (4)
- web前端 (23)
- javascript (1)
- php基础 (1)
- eclipse (3)
- 网站相关 (3)
- Apache (4)
- seo (12)
- db (28)
- server (3)
- api (4)
- 异常 (12)
- 计算机网络词汇表 (3)
- 随想录 (52)
- 收藏 (17)
- 犹太人的智慧 (3)
- 多线程 (1)
- jfreechart (7)
- Test (1)
- SorLib (30)
- ruby on rails (1)
最新评论
-
houyutao:
二三四都是错的空字符串也被匹配,*应该改成+
Java中判断字符串是否为数字的五种方法 -
mingyun:
但是 java.util.ArrayList 实现了 remo ...
java.lang.UnsupportedOperationException 解决方案 -
mingyun:
1.因为 Arrays.asList 返回的是 Arrays内 ...
java.lang.UnsupportedOperationException 解决方案 -
leolu007:
用java8新特性String testStr = " ...
java.lang.UnsupportedOperationException 解决方案 -
zhaohuaxishiwzw:
我之前所在的项目就是日本一家证券公司的项目。完全使用的是j2e ...
抛弃EJB(EJB2.0,EJB3.0,EJB4.0)
核心代码就是要将一个JFreeChart 对象,写到BufferedImage中。JFreeChart 中没有提供类似getImage(), getBufferedImage()方法,而是提供了一个createBufferedImage方法。
在这个例子中,您还可以找到如何解决JFreeChart的时间乱码问题。
JFreeChart chart = createChart(data);
BufferedImage image = chart.createBufferedImage(800, 300,
BufferedImage.TYPE_INT_RGB, null);
所有源码可以在附件中找到, 需要依赖JFreeChart的Jar包。 其余就是自己改改包路径,相信这个没啥难度。就两个类,一个用于处理JFrame和JFreeChart的逻辑,一个用于画图。
TimeCharttest
ImagePanel
在这个例子中,您还可以找到如何解决JFreeChart的时间乱码问题。
JFreeChart chart = createChart(data);
BufferedImage image = chart.createBufferedImage(800, 300,
BufferedImage.TYPE_INT_RGB, null);
所有源码可以在附件中找到, 需要依赖JFreeChart的Jar包。 其余就是自己改改包路径,相信这个没啥难度。就两个类,一个用于处理JFrame和JFreeChart的逻辑,一个用于画图。
TimeCharttest
package com.abczww.test.t1; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import java.awt.Font; import java.awt.image.BufferedImage; import java.io.IOException; import java.text.SimpleDateFormat; import javax.swing.JFrame; import org.jfree.chart.ChartFactory; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.DateAxis; import org.jfree.chart.axis.ValueAxis; import org.jfree.chart.plot.ValueMarker; import org.jfree.chart.plot.XYPlot; import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer; import org.jfree.data.time.Month; import org.jfree.data.time.Quarter; import org.jfree.data.time.TimeSeries; import org.jfree.data.time.TimeSeriesCollection; import org.jfree.data.xy.XYDataset; import org.jfree.ui.RectangleInsets; public class TimeCharttest extends JFrame { private static final long serialVersionUID = 2319942903676246265L; private ImagePanel imagePanel = new ImagePanel(); private TimeCharttest() throws IOException { XYDataset data = createDataset(); JFreeChart chart = createChart(data); BufferedImage image = chart.createBufferedImage(800, 300, BufferedImage.TYPE_INT_RGB, null); imagePanel.setImage(image); Container con = this.getContentPane(); con.add(imagePanel, BorderLayout.CENTER); this.setSize(900, 400); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args) throws IOException { new TimeCharttest(); } private static XYDataset createDataset() { TimeSeries timeseries = new TimeSeries("L&G 欧洲调查"); timeseries.add(new Month(2, 2001), 181.8D);// 这里用的是Month.class,同样还有Day.class // Year.class 等等 timeseries.add(new Month(3, 2001), 167.3D); timeseries.add(new Month(4, 2001), 153.8D); timeseries.add(new Month(5, 2001), 167.6D); timeseries.add(new Month(6, 2001), 158.8D); timeseries.add(new Month(7, 2001), 148.3D); timeseries.add(new Month(8, 2001), 153.9D); timeseries.add(new Month(9, 2001), 142.7D); timeseries.add(new Month(10, 2001), 123.2D); timeseries.add(new Month(11, 2001), 131.8D); timeseries.add(new Month(12, 2001), 139.6D); timeseries.add(new Month(1, 2002), 142.9D); timeseries.add(new Month(2, 2002), 138.7D); timeseries.add(new Month(3, 2002), 137.3D); timeseries.add(new Month(4, 2002), 143.9D); timeseries.add(new Month(5, 2002), 139.8D); timeseries.add(new Month(6, 2002), 137D); timeseries.add(new Month(7, 2002), 132.8D); TimeSeries timeseries1 = new TimeSeries("L&G 韩国调查"); timeseries1.add(new Month(2, 2001), 129.6D); timeseries1.add(new Month(3, 2001), 123.2D); timeseries1.add(new Month(4, 2001), 117.2D); timeseries1.add(new Month(5, 2001), 124.1D); timeseries1.add(new Month(6, 2001), 122.6D); timeseries1.add(new Month(7, 2001), 119.2D); timeseries1.add(new Month(8, 2001), 116.5D); timeseries1.add(new Month(9, 2001), 112.7D); timeseries1.add(new Month(10, 2001), 101.5D); timeseries1.add(new Month(11, 2001), 106.1D); timeseries1.add(new Month(12, 2001), 110.3D); timeseries1.add(new Month(1, 2002), 111.7D); timeseries1.add(new Month(2, 2002), 111D); timeseries1.add(new Month(3, 2002), 109.6D); timeseries1.add(new Month(4, 2002), 113.2D); timeseries1.add(new Month(5, 2002), 111.6D); timeseries1.add(new Month(6, 2002), 108.8D); timeseries1.add(new Month(7, 2002), 101.6D); TimeSeriesCollection timeseriescollection = new TimeSeriesCollection(); timeseriescollection.addSeries(timeseries); timeseriescollection.addSeries(timeseries1); // timeseriescollection.setDomainIsPointsInTime(true); // // domain轴上的刻度点代表的是时间点而不是时间段 return timeseriescollection; } // 2、由ChartFactory 产生 JFreeChart 对象 private static JFreeChart createChart(XYDataset xydataset) { JFreeChart jfreechart = ChartFactory.createTimeSeriesChart("L&G单位价格调查", "日期", "价格/单位", xydataset, true, true, false); jfreechart.setBackgroundPaint(Color.white); XYPlot xyplot = (XYPlot) jfreechart.getPlot(); // 获得 plot : XYPlot!! xyplot.setBackgroundPaint(Color.lightGray); xyplot.setDomainGridlinePaint(Color.white);// 网格的颜色 xyplot.setRangeGridlinePaint(Color.white);// 网格的颜色 xyplot.setAxisOffset(new RectangleInsets(5D, 5D, 5D, 5D)); xyplot.setDomainCrosshairVisible(true); xyplot.setRangeCrosshairVisible(true); ValueAxis categoryaxis = xyplot.getDomainAxis(); // 横轴上的 categoryaxis.setPositiveArrowVisible(true);// 增加横轴的箭头 xyplot.getRangeAxis().setPositiveArrowVisible(true);// 增加纵轴的箭头 categoryaxis.setTickLabelFont(new Font("SansSerif", 10, 12));// 设定字体、类型、字号 // 一些重要的方法: // A、增加标记线: xyplot.addRangeMarker(new ValueMarker(550D)); // 数值轴 Quarter quarter = new Quarter(2, 2002); xyplot.addDomainMarker(new ValueMarker(quarter.getMiddleMillisecond())); // 时间轴 // xyplot.setRangeGridlinePaint(Color.blue); // ----------------------- org.jfree.chart.renderer.xy.XYItemRenderer xyitemrenderer = xyplot .getRenderer(); if (xyitemrenderer instanceof XYLineAndShapeRenderer) { XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer) xyitemrenderer; xylineandshaperenderer.setBaseShapesVisible(true); // 数据点可见 xylineandshaperenderer.setBaseShapesFilled(true); // 数据点是实心点 } // B、数据点的调整 XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer) xyplot .getRenderer(); xylineandshaperenderer.setBaseShapesVisible(true); // 数据点可见 xylineandshaperenderer.setSeriesFillPaint(0, Color.red); // 数据点填充为红色 xylineandshaperenderer.setSeriesFillPaint(1, Color.white); // 数据点填充为白色 xylineandshaperenderer.setUseFillPaint(true); // 应用 DateAxis dateaxis = (DateAxis) xyplot.getDomainAxis(); // 对domain // 轴上日期显示格式定义 dateaxis.setDateFormatOverride(new SimpleDateFormat("MMM-yyyy")); // 解决中文乱码问题,共要处理这三部分 // 1、对标题 Font font1 = new Font("SimSun", 10, 20); // 设定字体、类型、字号 jfreechart.getTitle().setFont(font1); // 标题 // 2、对图里面的汉字设定,也就是Plot的设定 Font font2 = new Font("SimSun", 10, 16); // 设定字体、类型、字号 xyplot.getDomainAxis().setLabelFont(font2);// 相当于横轴或理解为X轴 xyplot.getRangeAxis().setLabelFont(font2);// 相当于竖轴理解为Y轴 // 3、下面的方块区域是 LegendTitle 对象 Font font3 = new Font("SimSun", 10, 12); // 设定字体、类型、字号 jfreechart.getLegend().setItemFont(font3);// 最下方 return jfreechart; } }
ImagePanel
package com.abczww.test.t1; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.image.BufferedImage; import javax.swing.JPanel; public class ImagePanel extends JPanel { private static final long serialVersionUID = 4644786195524096243L; private BufferedImage image; public ImagePanel() { super(); } public void setImage(BufferedImage image) { this.image = image; } protected void paintComponent(Graphics g) { super.paintComponent(g); g.setColor(Color.white); // img = Toolkit.getDefaultToolkit().getImage("C:\\test.jpg"); if (null != image) { this.setSize(image.getWidth(this), image.getHeight(this)); g.fill3DRect(0, 0, image.getWidth(this), image.getHeight(this), true); g.drawImage(image, 0, 0, null, this); setPreferredSize(new Dimension(image.getWidth(this), image.getHeight(this))); } } }
- src.zip (2.8 KB)
- 下载次数: 34
发表评论
-
利用JFreechart绘制饼状图(二)
2012-06-28 14:27 1609web.xml <?xml version=&quo ... -
利用JFreechart绘制复杂柱状图(三)
2012-06-26 13:46 2518web.xml <?xml version=&quo ... -
利用JFreechart绘制复杂柱状图(二)
2012-06-26 13:43 1526web.xml <?xml version=&quo ... -
利用JFreechart曲线图
2012-06-26 13:40 2083web.xml <?xml version=&quo ... -
利用JFreechart画饼状图(一)
2012-06-26 13:38 1793web.xml <?xml version=&quo ... -
利用JFreechart绘制柱状图(一)
2012-06-26 13:36 1663web.xml <?xml version=&quo ... -
控件位置可以配置的Swing桌面
2011-01-07 17:48 3036用过Wordpress或者Joomla的朋友一定对他们的灵活的 ... -
jfreechart jar包下载
2010-10-15 10:07 6909jfreechart 是java用于生成图表的开源工具包,网上 ... -
GradientPaint类的作用
2010-10-11 15:35 9841GradientPaint是Java2D中专门用来控制渐变的类 ... -
Swing控件(JPanel,Container等)设置背景图片
2010-09-16 11:07 11858Swing控件有直接设置背景颜色的方法,但没有直接设置背景图片 ... -
Java关于JIT的原理和相关知识
2010-09-13 16:31 7181今天在读java.awt.Toolkit类时,遇到了JIT,代 ... -
Java 2D 学习资料和API
2010-09-13 15:56 6674关键词:Java2D,坐标转换,渲染,坐标系,字体 ... -
Swing特效-渐显效果
2010-09-09 16:04 6255能不能让Swing控件也有渐隐和渐显的效果呢,答案当然是肯定的 ... -
利用JFreeChart画坐标及曲线图
2010-09-07 16:54 9563关键词:Swing,JFreeChart,坐标,曲线图 运行以 ... -
Java2D特效 文字旋转
2010-09-03 17:12 2341将图形围绕某点按照给定的角度进行旋转 效果图: 源代码: ... -
Java图像缩放 图片缩放
2010-08-15 12:31 9037图像缩放是我们常常用到的一个操作,原理是数字图像处理的事,这里 ... -
类DirectColorModel的作用
2010-08-13 16:11 2942DirectColorModel 类别是使用像素值的 Colo ... -
Java图像渐变
2010-08-13 16:05 7425图像渐变我们大体想一下思路无非是这样:将图像所有的像素点的RB ... -
Java 给图片增加 水印图片 水印文字
2010-07-12 20:49 4304很多时候会用到给图片增加水印,这个时候我推荐利用“光影魔术手” ... -
Java图像变灰 及相关类ColorSpace,ColorConvertOp
2010-06-08 15:49 12652用Java进行图像处理,会遇到ColorSpace这个类:Co ...
相关推荐
4. **创建ChartPanel**:ChartPanel是JFreeChart显示图表的组件,它可以嵌入到Swing应用的 JFrame 或 JDialog 中。`ChartPanel chartPanel = new ChartPanel(chart);` 5. **显示图表**:最后,将ChartPanel添加到...
本项目是基于 JFreeChart 创建的一个小型应用,下载解压后即可直接运行,便于快速了解和学习 JFreeChart 的用法。 **1. JFreeChart 库的引入** 在 Java 项目中使用 JFreeChart,首先需要将其依赖引入到项目中。通常...
例如,你可能会遇到如何动态更新数据、导出图表为图片、在 Web 应用中集成 JFreeChart 等问题,这些都是 JFreeChart 在实际项目中的常见应用场景。通过不断实践和探索,你将能够充分利用 JFreeChart 提供的强大功能...
JFrame frame = new JFrame("JFreeChart Example"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(new ChartPanel(chart)); frame.pack(); frame.setVisible(true); } ...
JFrame frame = new JFrame("JFreeChart 示例"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(chartPanel); frame.pack(); frame.setVisible(true); ``` 2. **图像文件**:...
JFrame frame = new JFrame("JFreeChart示例"); frame.setContentPane(panel); frame.pack(); frame.setVisible(true); ``` 其中,`createDataset()`方法会根据实际需求填充数据。 8. **学习资源** ...
此外,JFreeChart生成的图表可以直接在Web应用程序中显示,只需将图表对象嵌入到Servlet或JSP页面中即可。 #### 结论 JFreeChart作为一款成熟的Java图表库,为报表图开发提供了强大的支持。无论是基础的条形图、...
- 显示或保存图表:将生成的图表添加到`JFrame`中显示,或者保存为图片文件。 6. **示例代码** 以下是一个简单的柱状图示例: ```java CategoryDataset dataset = createDataset(); JFreeChart chart = ...
以上就是利用JFreeChart和Apache POI读取Excel文件并显示数据的基本流程。在实际应用中,可能还需要考虑错误处理、性能优化、数据筛选和过滤等细节。提供的压缩包文件"Project"可能包含了一个完整的示例代码,你可以...
JFrame frame = new JFrame("JFreeChart 示例"); frame.add(chartPanel); frame.pack(); frame.setVisible(true); File file = new File("output.png"); ChartUtilities.saveChartAsPNG(file, chart, 640, 480); ``...
2. 创建`JFreeChart`对象后,可以使用`ChartUtilities`类将其保存为图像文件,或者在`JFrame`上显示。 3. 调整图表的样式,如更改颜色、添加图例、设置轴的范围等,可以使用`JFreeChart`对象的相应方法。 配合CSDN...
本工程例子展示了如何利用JFreeChart创建包含中文内容的图表,并解决中文乱码问题以及饼图中显示百分比的问题。 ### 一、中文乱码处理 在Java程序中,处理中文字符时常常会遇到乱码问题。这通常是由于字符编码设置...
通过这些基本操作,开发者可以利用JFreeChart API创建复杂的图表应用,展示数据并进行数据分析。记住,实践是最好的学习方式,尝试编写代码并调整参数,以实现你需要的特定图表效果。同时,JFreeChart的官方文档和...
JFrame frame = new JFrame("JFreeChart Example"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.add(chartPanel); frame.pack(); frame.setVisible(true); ``` JFreeChart还支持自定义图表的...
- 将图表添加到 `JFrame` 并显示。 4. **自定义仪表盘** JFreeChart 允许开发者通过调整各种参数来自定义仪表盘的外观和行为。例如,可以改变指针形状、添加标签、设置背景图案、调整刻度间隔等。此外,还可以...
5. **绘制和展示**:创建好图表后,可以将其绘制到`BufferedImage`上,然后显示在GUI组件如`JFrame`中,或者保存为图片文件。`ChartUtilities`类提供了方便的方法,如`ChartUtilities.writeChartAsPNG()`,用于将...
通过`JFreeChart_GUI_Demo`,开发者可以学习如何有效地利用`JFreeChart`库创建交互式的图表应用,结合Java GUI技术,为用户提供直观的数据展示界面。这些示例代码涵盖了从数据准备、图表创建到界面集成的全过程,...
在这个"JFreeChart画折线实例"中,我们将深入探讨如何利用JFreeChart库来创建折线图,并将其保存为本地文件。下面将详细讲解相关知识点。 首先,JFreeChart库的引入是通过在项目中添加其对应的依赖或jar包。如果你...
4. **输出方式**:JFreeChart不仅可以在Swing组件中直接展示图表,还可以导出为各种格式,如PNG、JPEG、PDF、SVG等,方便在报告或网页中集成。 5. **交互性**:JFreeChart支持用户交互,例如点击图表元素获取详细...