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的窗体界面中。