Java讀取資料庫資料生成柱狀圖
阿新 • • 發佈:2019-01-25
其他類就不上程式碼了,跟你平時連資料庫一樣。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); } }