57. Les frameworks de tests Partie 6 : Développement d'applications mobiles Imprimer Sommaire Consulter avec table des matières Développons en Java   v 0.90  
Copyright (C) 1999-2006 Jean-Michel DOUDOUX  

 

58. Des bibliothèques open source

 

chapitre 5 8

 

58.1. JFreeChart

JFreeChart est une bibliothèque open source qui permet de créer des données statistiques sous la forme de graphiques. Elle possède plusieurs formats dont le camembert, les barres ou les lignes et propose de nombreuses options de configuration pour personnaliser le rendu des graphiques. Elle peut s'utiliser dans des applications standalone ou des applications web et permet également d'exporter le graphique sous la forme d'une image.

http://www.jfree.org/jfreechart/

La version utilisée dans cette section est la 0.9.18.

Pour l'utiliser, il faut télécharger le fichier jfreechart-0.9.18.zip et le décompresser. Son utilisation nécessite l'ajout dans le classpath des fichiers jfreechart-0.9.18.zip et des fichiers .jar présents dans le répertoire lib décompressé.

Les données utilisées dans le graphique sont encapsulées dans un objet de type Dataset. Il existe plusieurs sous type de cette classe en fonction du type de graphique souhaité.

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.

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; 

  public TestPieChart() { 
    addWindowListener(new WindowAdapter() { 
      public void windowClosing(WindowEvent e) { 
        dispose(); 
        System.exit(0); 
      } 
    }); 
    pnl = new JPanel(new BorderLayout()); 
    setContentPane(pnl); 
    setSize(400, 250); 

    DefaultPieDataset pieDataset = new DefaultPieDataset(); 
    pieDataset.setValue("Valeur1", new Integer(27)); 
    pieDataset.setValue("Valeur2", new Integer(10)); 
    pieDataset.setValue("Valeur3", new Integer(50)); 
    pieDataset.setValue("Valeur4", new Integer(5)); 

    JFreeChart pieChart = ChartFactory.createPieChart("Test camembert", 
      pieDataset, true, true, true); 
    ChartPanel cPanel = new ChartPanel(pieChart); 
    pnl.add(cPanel); 
  } 

  public static void main(String args[]) { 
    TestPieChart tpc = new TestPieChart(); 
    tpc.setVisible(true); 
  } 
}

Pour chaque graphique, il existe de nombreuses possibilités de configuration.

Exemple :
... 
    JFreeChart pieChart = ChartFactory.createPieChart("Test camembert", 
      pieDataset, true, true, true); 
    PiePlot piePlot = (PiePlot) pieChart.getPlot(); 
    piePlot.setExplodePercent(1, 0.5); 
    Legend legend = pieChart.getLegend(); 
    legend.setAnchor(Legend.EAST_NORTHEAST); 
    ChartPanel cPanel = new ChartPanel(pieChart); 
...

Il est très facile d'exporter le graphique dans un flux.

Exemple : enregistrement du graphique dans un fichier<
... 
    File fichier = new File("image.png"); 
    try { 
      ChartUtilities.saveChartAsPNG(fichier, pieChart, 400, 250); 
    } catch (IOException e) { 
      e.printStackTrace(); 
    } 
...

JFreeChart propose aussi plusieurs autres types de graphiques dont les graphiques en forme de barres.

Exemple : un graphique sous formes de barres
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 TestBarChart extends JFrame { 
  private JPanel pnl; 

  public TestBarChart() { 
    addWindowListener(new WindowAdapter() { 
      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"); 
    dataset.addValue(270000.0, "Produit 2", "2000"); 
    dataset.addValue(600000.0, "Produit 2", "2001"); 
    dataset.addValue(230000.0, "Produit 2", "2002"); 
    dataset.addValue(90000.0, "Produit 3", "2000"); 
    dataset.addValue(450000.0, "Produit 3", "2001"); 
    dataset.addValue(170000.0, "Produit 3", "2002"); 

    JFreeChart barChart = ChartFactory.createBarChart("Evolution des ventes", "", 
      "Unité vendue", dataset, PlotOrientation.VERTICAL, true, true, false); 
    ChartPanel cPanel = new ChartPanel(barChart); 
    pnl.add(cPanel); 
  } 

  public static void main(String[] args) { 
    TestBarChart tbc = new TestBarChart(); 
    tbc.setVisible(true); 
  } 
} 

JFreechart peut aussi être mis en oeuvre dans une application web, le plus pratique étant d'utiliser une servlet qui renvoie dans la réponse une image générée par JfreeChart.

Exemple : JSP  qui affiche le graphique
<%@ page language="java" %> 
<!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en"> 
<html> 
<head> 
<title>Test JFreeChart</title> 
</head> 
<body bgcolor="#FFFFFF"> 
<H1>Exemple de graphique avec JFreeChart</h1> 
<img src="/testlomboz2/ServletBarChart"> 
</body> 
</html>

Dans l'exemple précédent, l'image contenant le graphique est généré par une sevlet.

Exemple : servlet qui générère l'image
import java.io.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 
import org.jfree.chart.*; 
import org.jfree.chart.plot.*; 
import org.jfree.data.*; 

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"); 
    dataset.addValue(180000.0, "Produit 1", "2002"); 
    dataset.addValue(270000.0, "Produit 2", "2000"); 
    dataset.addValue(600000.0, "Produit 2", "2001"); 
    dataset.addValue(230000.0, "Produit 2", "2002"); 
    dataset.addValue(90000.0, "Produit 3", "2000"); 
    dataset.addValue(450000.0, "Produit 3", "2001"); 
    dataset.addValue(170000.0, "Produit 3", "2002"); 

    JFreeChart barChart = ChartFactory.createBarChart("Evolution des ventes", "", 
      "Unité vendue", dataset, PlotOrientation.VERTICAL, true, true, false); 
    OutputStream out = response.getOutputStream(); 
    response.setContentType("image/png"); 
    ChartUtilities.writeChartAsPNG(out, barChart, 400, 300); 
  } 
}

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.

 

58.2. Beanshell

Beanshell est un interpréteur de scripts qu'il est possible d'intégrer dans une application.

http://www.beanshell.org/

 

 


  57. Les frameworks de tests Partie 6 : Développement d'applications mobiles Imprimer Sommaire Consulter avec table des matières Développons en Java   v 0.90  
Copyright (C) 1999-2006 Jean-Michel DOUDOUX