Base de données et JFreeChart

cybertls Messages postés 1 Date d'inscription samedi 23 août 2008 Statut Membre Dernière intervention 24 août 2008 - 24 août 2008 à 02:51
indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 - 25 août 2008 à 13:19
Bonsoir tout le monde,

Je ne suis pas très forte en programmation, mais j'ai un dossier à rendre mercredi 27/08/08.

Je dois générer un tableau de bord en java et pour cela j'utilise une interface swing avec un graphe créé avec JFreeChart, ce que je n'arrive pas à faire c'est faire le lien entre ma base de données et JFreeChart.

Je veux qu'au niveau des barres, la valeur soit prise directement dans un champs de ma table

dataset.addValue(4.0, series1, category2);  // je veux avoir au lieu de 4.0 avoir V1.0

Est ce que quelqu'un peut m'aider, ça fait un moment que je fais les forums, mais je ne trouve rien et là je n'ai plus trop de temps.
J'espère que j'aurais une réponse le plus rapidement possible c'est urgent, merci d'avance

Voici mon code:

public class FenetreTableau
{
    public static void main( String[] args)
    {

        //Log.getInstance().addTarget(new PrintStreamLogTarget());
        //TextUtilities.setUseFontMetricsGetStringBounds(false);
        Fenetre fenetre = new Fenetre("Graphe sous forme de Bar");
        fenetre.pack();
        RefineryUtilities.centerFrameOnScreen(fenetre);
        fenetre.setVisible(true);
       
        String[]donnee =new String [10];
        String[]lib = new String [10];
        double[] val = new double[6];
       
        try
        {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // chargement du driver
            //charge et configure le driver de la base de données
            Connection cx = DriverManager.getConnection("jdbc:mysql://localhost/projet","root","");
            //réalise la connexion et l'authentification à la base de données.
            Statement instruction = cx.createStatement();
            //contient la requête SQL et la transmet à la base de données
            ResultSet resultat = instruction.executeQuery("SELECT * FROM donnee1");
            //permet de parcourir les informations retournées par la base de données dans le cas d'une sélection de données
           
            int i=0;
            while(resultat.next())
            {
                String v1 = resultat.getString("id");
                String v2 = resultat.getString("libelle");
                double v3 = resultat.getDouble("val");
               
                donnee[i]=v1;
                lib[i]=v2;
                val[i]=v3;
               
                i++;
                System.out.println(v1);
                System.out.println(v2);
                System.out.println(v3);
               
                System.out.println("*********************************");
               
            }
           
        }catch(Exception e)
        {
            System.out.println(e.toString());
        }
        }

    }

class Fenetre extends JFrame
{
    public Fenetre (String title)
    {
        super (title);
        CategoryDataset dataset = createDataset();
        JFreeChart chart = createChart (dataset);
        ChartPanel chartPanel = new ChartPanel (chart, false);
        chartPanel.setPreferredSize(new Dimension (500, 270));
        chartPanel.setChart(chart);   
        setContentPane (chartPanel);
    }
   
   
    private  CategoryDataset createDataset()
    {
// row keys...
       
       
       
        final String series1 = "Premier";
        final String series2 = "Second";
        final String series3 = "Troisième";

        // column keys...
        final String category1 = "Paramètre 1";
        final String category2 = "Paramètre 2";
        final String category3 = "Paramètre 3";
        final String category4 = "Paramètre 4";
        final String category5 = "Paramètre 5";

        // create the dataset...
        final DefaultCategoryDataset dataset = new DefaultCategoryDataset();

        dataset.addValue(1.0, series1, category1);
        dataset.addValue(4.0, series1, category2);
        dataset.addValue(3.0, series1, category3);
        dataset.addValue(5.0, series1, category4);
        dataset.addValue(5.0, series1, category5);

        dataset.addValue(5.0, series2, category1);
        dataset.addValue(7.0, series2, category2);
        dataset.addValue(6.0, series2, category3);
        dataset.addValue(8.0, series2, category4);
        dataset.addValue(4.0, series2, category5);

        dataset.addValue(4.0, series3, category1);
        dataset.addValue(3.0, series3, category2);
        dataset.addValue(2.0, series3, category3);
        dataset.addValue(3.0, series3, category4);
        dataset.addValue(6.0, series3, category5);
       
        return dataset;
       
    }
   
    private JFreeChart createChart (CategoryDataset dataset)
    {
        JFreeChart chart = ChartFactory.createBarChart
        (
                "Tableau de bord", // nom du graphe
                "category",
                "value",
                dataset, // données
                PlotOrientation.VERTICAL, //orientation du graphe
                true,
                true,
                false  // urls
         );
       
        chart.setBackgroundPaint(Color.white); // couleur de fond du graphe
       
        CategoryPlot plot = (CategoryPlot) chart.getPlot();
        plot.setBackgroundPaint(Color.lightGray);
        plot.setDomainGridlinePaint(Color.white);
        plot.setDomainGridlinesVisible(true);
        plot.setRangeGridlinePaint(Color.white);
       
        final IntervalMarker target = new IntervalMarker(4.5, 7.5);
        target.setLabel("Target Range");
        target.setLabelFont(new Font("SansSerif", Font.ITALIC, 11));
        target.setLabelAnchor(RectangleAnchor.LEFT);
        target.setLabelTextAnchor(TextAnchor.CENTER_LEFT);
        target.setPaint(new Color(222, 222, 255, 128));
        plot.addRangeMarker(target, Layer.BACKGROUND);
       
     
        final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
        rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());

       
        final BarRenderer renderer = (BarRenderer) plot.getRenderer();
        renderer.setDrawBarOutline(false);
        renderer.setItemMargin(0.10);
       
       
        final GradientPaint gp0 = new GradientPaint(
            0.0f, 0.0f, Color.blue,
            0.0f, 0.0f, Color.lightGray
        );
        final GradientPaint gp1 = new GradientPaint(
            0.0f, 0.0f, Color.green,
            0.0f, 0.0f, Color.lightGray
        );
        final GradientPaint gp2 = new GradientPaint(
            0.0f, 0.0f, Color.red,
            0.0f, 0.0f, Color.lightGray
        );
        renderer.setSeriesPaint(0, gp0);
        renderer.setSeriesPaint(1, gp1);
        renderer.setSeriesPaint(2, gp2);
       
 
        renderer.setItemLabelsVisible(true);
        final ItemLabelPosition p = new ItemLabelPosition(
            ItemLabelAnchor.INSIDE12, TextAnchor.CENTER_RIGHT,
            TextAnchor.CENTER_RIGHT, -Math.PI / 2.0
        );
        renderer.setPositiveItemLabelPosition(p);

        final ItemLabelPosition p2 = new ItemLabelPosition(
            ItemLabelAnchor.OUTSIDE12, TextAnchor.CENTER_LEFT,
            TextAnchor.CENTER_LEFT, -Math.PI / 2.0
        );
        renderer.setPositiveItemLabelPositionFallback(p2);
        final CategoryAxis domainAxis = plot.getDomainAxis();
        domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);
       
       
        return chart;
       
    }
}

1 réponse

indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 22
25 août 2008 à 13:19
0
Rejoignez-nous