2012-03-31 20:11:39|?次阅读|上传:wustguangh【已有?条评论】发表评论
关键词:Java, Swing, 界面设计|来源:唯设编程网
在统计图表中,堆积图能够直观的对数据进行展示,Java利用JFreeChart可以方便的绘制各种统计图表,前面的文章介绍了Java使用JFreeChart绘制柱状图、折线图、饼形图和时序图的方法,本文继续介绍JFreeChart的使用方法,本文将着重介绍 Swing客户端程序使用 JFreeChart在窗体中绘制堆积图的方法,依然会给出程序的运行效果和实际的Java源代码。
首先展示程序的运行效果:
Java代码:
package Test.JFreeChar; import java.awt.Component; import java.awt.Font; import javax.swing.JFrame; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.StandardChartTheme; import org.jfree.chart.plot.PlotOrientation; import org.jfree.data.category.CategoryDataset; import org.jfree.data.general.DatasetUtilities; /** * JFreeChar堆积图测试 * */ public class JFreeCharStack1 extends JFrame{ private static final long serialVersionUID = 1L; public static void main(String[] args){ new JFreeCharStack1(); } JFreeCharStack1(){ this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setTitle("JFreeChar堆积图"); this.add(CreateMainPanel()); this.pack(); this.setVisible(true); } private Component CreateMainPanel() { CategoryDataset dataset = getBarData(); JFreeChart chart = createJFreeChart(dataset); return new ChartPanel(chart); } private JFreeChart createJFreeChart(CategoryDataset dataset) { //这里的"name"参数;是什么意思我也不知道,反正这样可以用 StandardChartTheme standardChartTheme = new StandardChartTheme("name"); //可以改变轴向的字体 standardChartTheme.setLargeFont(new Font("楷体",Font.BOLD, 12)); //可以改变图例的字体 standardChartTheme.setRegularFont(new Font("宋体",Font.BOLD, 8)); //可以改变图标的标题字体 standardChartTheme.setExtraLargeFont(new Font("隶书",Font.BOLD, 20)); ChartFactory.setChartTheme(standardChartTheme);//设置主题 // 图表标题 JFreeChart chart = ChartFactory.createStackedBarChart("测试用堆积图", "xANXIS", // 目录轴的显示标签 "y坐标", // 数值轴的显示标签 dataset, // 数据集 PlotOrientation.VERTICAL, // 图表方向:水平、垂直 true, // 是否显示图例(对于简单的柱状图必须是false) false, // 是否生成工具 false // 是否生成URL链接 ); return chart; } public CategoryDataset getBarData() { double[] income=new double[30]; double[] outlay=new double[30]; double[][] data = new double[][] {income,outlay}; String[] columnKeys = new String[30]; for(int i=0;i<30;i++){ income[i]=Math.random()*100; outlay[i]=Math.random()*90; columnKeys[i]="08"+String.format("%02d", i+1); } String[] rowKeys = { "收入", "支出" }; return DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, data); } }
至此,一个完整的Java使用JFreeChart绘制堆积图的实例便完成了,并将其显示在Swing的窗体界面中。