分类: Oracle
2008-04-23 17:34:46
该示例演示如何使用 JFreeChart 生成条形图,还将介绍在 Swing 中显示 JFreeChart 生成的图表的想法。清单 4 显示了用于生成该图表以及在 Swing 中显示生成的图表的最重要的代码。
清单 4: 从 Java Swing 生成条形图
/** * Create Bar Chart showing salary of each employee. * * @param aOrientation Horizontal or Vertical orientation of bar chart. * @return Bar Chart. */ public JFreeChart createSalaryPerFinanceEmployeeBarChart( PlotOrientation aOrientation) { JFreeChart barChart = null; try { final String QUERY_SALARY_PER_FINANCE_EMPLOYEE = "SELECT first_name || ' ' || last_name AS Name, salary " + "FROM employees " + "WHERE department_id = 100"; final CategoryDataset barDataset = new JDBCCategoryDataset( databaseAccess.getOracleDbConnection(), QUERY_SALARY_PER_FINANCE_EMPLOYEE ); barChart = ChartFactory.createBarChart( TITLE_SALARY_PER_FINANCE_EMP, // title LABEL_EMPLOYEES_FINANCE, // x-axis label LABEL_SALARIES, // y-axis label barDataset, aOrientation, true, // legend displayed true, // tooltips displayed false ); // no URLs } catch (SQLException sqlEx) { // . . . exception handling goes here . . . } return barChart; } . . . JFrame frame = new JFrame(aTitle); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JFreeChart barChart = createSalaryPerFinanceEmployeeBarChart( PlotOrientation.VERTICAL); BufferedImage image = barChart.createBufferedImage(750,450); JLabel label = new JLabel(); label.setIcon(new ImageIcon(image)); frame.getContentPane().add(label); frame.pack(); frame.setVisible(true); |
该代码示例使用 String 常量取代硬编码的字符串,这些常量可以根据它们字母全部大写、单词之间用下划线分隔的命名规则得以轻松识别。
前两个饼形图生成示例使用了一个 PieDataset。这个条形图生成示例改用了一个 CategoryDataset。与饼形图不同,方向也是条形图的一个问题,可以指定垂直或水平两个方向。该示例指定了一个垂直绘制方向。
在代码清单的底部,示例代码演示了如何将图表作为一个可以作为图标轻松应用到 JLabel 的 BufferedImage 进行检索。图 7 显示了这个包含 JFreeChart 生成的条形图的简单的 Swing 图形用户界面 (GUI) 的快照图片。
图7:在Swing应用程序中生成的条形图 |