Vous êtes sur la page 1sur 4

ENI

JFreeChart });
pnl = new JPanel(new BorderLayout());
JFreeChart est une bibliothèque open source qui setContentPane(pnl);
permet de d'afficher des données statistiques setSize(400, 250);
sous la forme de graphiques. Elle possède
plusieurs formats dont le camembert, les barres DefaultPieDataset pieDataset = new
ou les lignes et propose de nombreuses options DefaultPieDataset();
de configuration pour personnaliser le rendu des pieDataset.setValue("Valeur1", new
graphiques. Elle peut s'utiliser dans des Integer(27));
applications standalone ou des applications web pieDataset.setValue("Valeur2", new
et permet également d'exporter le graphique sous Integer(10));
la forme d'une image. pieDataset.setValue("Valeur3", new
Integer(50));
http://www.jfree.org/jfreechart/ pieDataset.setValue("Valeur4", new
Integer(5));
La version utilisée dans cette section est la 0.9.18.
JFreeChart pieChart =
ChartFactory.createPieChart("Test
Pour l'utiliser, il faut télécharger le fichier camembert",
jfreechart-0.9.18.zip et le décompresser. Son pieDataset, true, true, true);
utilisation nécessite l'ajout dans le classpath des ChartPanel cPanel = new
fichiers jfreechart-0.9.18.zip et des fichiers .jar ChartPanel(pieChart);
présents dans le répertoire lib décompressé. pnl.add(cPanel);
}
Les données utilisées dans le graphique sont
encapsulées dans un objet de type Dataset. Il public static void main(String args[]) {
existe plusieurs sous type de cette classe en TestPieChart tpc = new TestPieChart();
fonction du type de graphique souhaité. tpc.setVisible(true);
}
Un objet de type JFreechart encapsule le }
graphique. Une instance d'un tel objet est obtenue
en utilisant une des méthodes de la classe
ChartFactory.

Exemple : Un exemple avec un graphique en


forme de camembert

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import org.jfree.chart.*;
import org.jfree.chart.plot.*;
import org.jfree.data.*;

public class TestPieChart extends JFrame {


private JPanel pnl;
Pour chaque graphique, il existe de nombreuses
public TestPieChart() {
possibilités de configuration.
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent Exemple :
e) {
dispose(); ...
System.exit(0); JFreeChart pieChart =
} ChartFactory.createPieChart("Test camembert",
1
ENI

pieDataset, true, true, true); import org.jfree.data.*;


PiePlot piePlot = (PiePlot) pieChart.getPlot();
piePlot.setExplodePercent(1, 0.5); public class TestBarChart extends JFrame {
Legend legend = pieChart.getLegend(); private JPanel pnl;
legend.setAnchor(Legend.EAST_NORTHEAS
T); public TestBarChart() {
ChartPanel cPanel = new addWindowListener(new WindowAdapter()
ChartPanel(pieChart); {
... public void windowClosing(WindowEvent
e) {
dispose();
System.exit(0);
}
});
pnl = new JPanel(new BorderLayout());
setContentPane(pnl);
setSize(400, 250);

DefaultCategoryDataset dataset = new


DefaultCategoryDataset();
dataset.addValue(120000.0, "Produit 1",
"2000");
dataset.addValue(550000.0, "Produit 1",
"2001");
dataset.addValue(180000.0, "Produit 1",
"2002");
Il est très facile d'exporter le graphique dans un dataset.addValue(270000.0, "Produit 2",
flux. "2000");
dataset.addValue(600000.0, "Produit 2",
"2001");
Exemple : enregistrement du graphique dans dataset.addValue(230000.0, "Produit 2",
un fichier "2002");
dataset.addValue(90000.0, "Produit 3",
... "2000");
File fichier = new File("image.png"); dataset.addValue(450000.0, "Produit 3",
try { "2001");
ChartUtilities.saveChartAsPNG(fichier, dataset.addValue(170000.0, "Produit 3",
pieChart, 400, 250); "2002");
} catch (IOException e) {
e.printStackTrace(); JFreeChart barChart =
} ChartFactory.createBarChart("Evolution des
... ventes", "",
"Unité vendue", dataset,
JFreeChart propose aussi plusieurs autres types PlotOrientation.VERTICAL, true, true, false);
de graphiques dont les graphiques en forme de ChartPanel cPanel = new
barres. ChartPanel(barChart);
pnl.add(cPanel);
}
Exemple : un graphique sous formes de
barres public static void main(String[] args) {
TestBarChart tbc = new TestBarChart();
import java.awt.*; tbc.setVisible(true);
import java.awt.event.*; }
import javax.swing.*; }
import org.jfree.chart.*;
import org.jfree.chart.plot.*;

2
ENI

org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.category.*;

public class ServletBarChart extends


HttpServlet {

protected void doGet(HttpServletRequest


request, HttpServletResponse response)
throws ServletException, IOException {

DefaultCategoryDataset dataset = new


DefaultCategoryDataset();
dataset.addValue(120000.0, "Produit 1",
"2000");
dataset.addValue(550000.0, "Produit 1",
"2001");
JFreechart peut aussi être mis en oeuvre dans dataset.addValue(180000.0, "Produit 1",
une application web, le plus pratique étant "2002");
d'utiliser une servlet qui renvoie dans la réponse dataset.addValue(270000.0, "Produit 2",
une image générée par JfreeChart. "2000");
dataset.addValue(600000.0, "Produit 2",
"2001");
Exemple : JSP qui affiche le graphique
dataset.addValue(230000.0, "Produit 2",
<%@ page language="java" %> "2002");
<!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 dataset.addValue(90000.0, "Produit 3",
transitional//en"> "2000");
<html> dataset.addValue(450000.0, "Produit 3",
<head> "2001");
<title>Test JFreeChart</title> dataset.addValue(170000.0, "Produit 3",
</head> "2002");
<body bgcolor="#FFFFFF">
<H1>Exemple de graphique avec JFreeChart</h1> JFreeChart barChart =
<img ChartFactory.createBarChart("Evolution des
ventes", "", "Unité vendue", dataset,
src="http://localhost:8087/examples/servlet/ServletBa
PlotOrientation.VERTICAL, true, true, false);
r OutputStream out =
Chart"> response.getOutputStream();
</body> response.setContentType("image/png");
</html> ChartUtilities.writeChartAsPNG(out,
barChart, 400, 300);
Dans l'exemple précédent, l'image contenant le }
graphique est générée par une servlet. }

Compiler la servlet avec la jfreechart.jar :


Exemple : servlet qui générère l'image javac –classpath jfreechart.jar ; servlet.jar
ServletBarChart.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.jfree.chart.*;
import org.jfree.chart.plot.*;
import org.jfree.data.*;
//import
org.jfree.data.category.CategoryDataset;
//import

3
ENI

Formats

L'export de rapports peut être aux formats :PDF,


HTML,XLS et XLSX,CSV,XML,RTF,Texte,SWF,
ODF.

Il est également possible d'utiliser d'autres


bibliothèques (JFreeChart…) pour accompagner
les rapports de diagrammes.

Les données peuvent provenir de sources


diverses :JDBC, XML,Fichiers texte, etc

Cette section n'a proposé qu'une introduction à


JFreeChart en proposant quelques exemples très
simple sur les nombreuses possibilités de cette
puissante bibliothèque.

L’OUTIL JASPERREPORT

JasperReports est un outil de reporting open


source, offert sous forme d'une bibliothèque
(jasperreports.jar) qui peut être embarquée dans
tous types d'applications Java.

JasperReports se base sur des fichiers XML


(.jrxml) pour la présentation des états. Il peut être
couplé à iReport (outil WYSIWYG de création de
compte-rendus visuels pour JasperReports, écrit
en Java ) ou JasperStudio (plugin Eclipse
équivalent) pour faciliter sa mise en œuvre dans
une application Java, classique ou orientée web.
4

Vous aimerez peut-être aussi