1. 程式人生 > >Java讀取資料庫資料生成柱狀圖

Java讀取資料庫資料生成柱狀圖

public class BarChart {
	ChartPanel frame1;

	public BarChart() {
		CategoryDataset dataset = getDataSet();
		JFreeChart chart = ChartFactory.createBarChart3D("水果", // 圖表標題
				"水果種類", // 目錄軸的顯示標籤
				"數量", // 數值軸的顯示標籤
				dataset, // 資料集
				PlotOrientation.VERTICAL, // 圖表方向:水平、垂直
				true, // 是否顯示圖例(對於簡單的柱狀圖必須是false)
				false, // 是否生成工具
				false // 是否生成URL連結
				);

		// 從這裡開始
		CategoryPlot plot = chart.getCategoryPlot();// 獲取圖表區域物件
		CategoryAxis domainAxis = plot.getDomainAxis(); // 水平底部列表
		domainAxis.setLabelFont(new Font("黑體", Font.BOLD, 14)); // 水平底部標題
		domainAxis.setTickLabelFont(new Font("宋體", Font.BOLD, 12)); // 垂直標題
		ValueAxis rangeAxis = plot.getRangeAxis();// 獲取柱狀
		rangeAxis.setLabelFont(new Font("黑體", Font.BOLD, 15));
		chart.getLegend().setItemFont(new Font("黑體", Font.BOLD, 15));
		chart.getTitle().setFont(new Font("宋體", Font.BOLD, 20));// 設定標題字型

		// 到這裡結束,雖然程式碼有點多,但只為一個目的,解決漢字亂碼問題

		frame1 = new ChartPanel(chart, true); // 這裡也可以用chartFrame,可以直接生成一個獨立的Frame

	}

	private static CategoryDataset getDataSet() {
		DefaultCategoryDataset dataset = new DefaultCategoryDataset();
		List<News> data = new ArrayList<News>();
		NewsDao dao = new NewsDao();
		ArrayList<News> list = dao.queryAll();
		double value =0;
		String rowKeys=null;
		String columnKeys=null;
		for (News news : list) {
//			data.add(new News(news.getNewsId(), news.getTypeId(), news
//					.getTitle(), news.getPublishTime(), news.getBody(), news
//					.getTag(), news.getAuthor(), news.getClicks(), news
//					.getImgUrl()));
			value = news.getNewsId();
			rowKeys = news.getTitle();
			columnKeys =  news.getAuthor();
			dataset.addValue(value, rowKeys, columnKeys);
			System.out.println(value+"  "+rowKeys+"  "+columnKeys);
		}
//		if(value!=0&&rowKeys!=null&&columnKeys!=null){
//			System.out.println(value+"  "+rowKeys+"  "+columnKeys);
//			dataset.addValue(value, rowKeys, columnKeys);
//		}
//		dataset.addValue(100, "北京", "蘋果");
//		dataset.addValue(100, "上海", "蘋果");
//		dataset.addValue(100, "廣州", "蘋果");
//		dataset.addValue(200, "北京", "梨子");
//		dataset.addValue(200, "上海", "梨子");
//		dataset.addValue(200, "廣州", "梨子");
//		dataset.addValue(300, "北京", "葡萄");
//		dataset.addValue(300, "上海", "葡萄");
//		dataset.addValue(300, "廣州", "葡萄");
//		dataset.addValue(400, "北京", "香蕉");
//		dataset.addValue(400, "上海", "香蕉");
//		dataset.addValue(400, "廣州", "香蕉");
//		dataset.addValue(500, "北京", "荔枝");
//		dataset.addValue(500, "上海", "荔枝");
//		dataset.addValue(500, "廣州", "荔枝");
		return dataset;
	}

	public ChartPanel getChartPanel() {
		return frame1;

	}

	public static void main(String[] args) {
		JFrame frame = new JFrame("Java資料統計圖");
		// frame.setLayout(new GridLayout(2,2,10,10));
		frame.add(new BarChart().getChartPanel()); // 新增柱形圖
		// frame.add(new BarChart1().getChartPanel()); //新增柱形圖的另一種效果
		// frame.add(new PieChart().getChartPanel()); //新增餅狀圖
		// frame.add(new TimeSeriesChart().getChartPanel()); //新增折線圖
		frame.setBounds(50, 50, 800, 600);
		frame.setVisible(true);
	}
}
其他類就不上程式碼了,跟你平時連資料庫一樣。