使用JFreeChart显示您的Oracle数据库数据(1)(5)
示例 3:在 Swing 中生成条形图
该示例演示如何使用 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应用程序中生成的条形图 |




