Modifier valeurs d'un stackedbarchart à partir d'un jtextfield

ririsuperstar - 6 avril 2013 à 16:02
 Utilisateur anonyme - 9 avril 2013 à 13:46
Bonjour,
Je voudrais qu'en entrant une valeur dans le jTextField1, puis en cliquant sur le bouton jButton1, ça modifie la hauteur de la colonne 1 de mon histogramme (qui sera dans le jPanel1).
En réalité, il s'agit d'un stackedbarchart composé de huit colonnes, chacune divisée en 3 blocs.
Voici les codes:

package spu;

/**
 *
 * @author Mikael
 */
public class Isostasie extends javax.swing.JInternalFrame {

    /**
     * Creates new form Isostasie
     */
    public Isostasie() {
        initComponents();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jPanel2 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        jTextField1 = new javax.swing.JTextField();
        jButton1 = new javax.swing.JButton();

        setClosable(true);
        setIconifiable(true);
        setMaximizable(true);
        setFrameIcon(new javax.swing.ImageIcon(getClass().getResource("/spu/Image1.png"))); // NOI18N
        setPreferredSize(new java.awt.Dimension(975, 616));

        jPanel1.setBackground(new java.awt.Color(153, 153, 153));

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 969, Short.MAX_VALUE)
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 456, Short.MAX_VALUE)
        );

        jPanel2.setBackground(new java.awt.Color(204, 204, 204));

        jLabel1.setText("Colonne 1");

        jButton1.setText("Valider");

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGap(18, 18, 18)
                        .addComponent(jLabel1)
                        .addGap(18, 18, 18)
                        .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGap(40, 40, 40)
                        .addComponent(jButton1)))
                .addContainerGap(835, Short.MAX_VALUE))
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1)
                    .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(26, 26, 26)
                .addComponent(jButton1)
                .addContainerGap(50, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(jPanel2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>
    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JTextField jTextField1;
    // End of variables declaration
}


ET

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package spu;

import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Paint;
import java.awt.Window;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.LegendItem;
import org.jfree.chart.LegendItemCollection;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.SubCategoryAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.ValueMarker;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.renderer.category.GroupedStackedBarRenderer;
import org.jfree.chart.renderer.category.StandardBarPainter;
import org.jfree.data.KeyToGroupMap;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.GradientPaintTransformType;
import org.jfree.ui.RectangleAnchor;
import org.jfree.ui.RefineryUtilities;
import org.jfree.ui.StandardGradientPaintTransformer;
import org.jfree.ui.TextAnchor;

/**
 * A simple demonstration application showing how to create a stacked bar chart
 * using data from a {@link CategoryDataset}.
 */
public class Isobarre extends ApplicationFrame {

    /**
     * Creates a new demo.
     *
     * @param title  the frame title.
     */
    public Isobarre(final String title) {
        super(title);
        final CategoryDataset dataset = createDataset();
        final JFreeChart chart = createChart(dataset);
        final ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.setPreferredSize(new java.awt.Dimension(590, 350));
        setContentPane(chartPanel);
    }

    /**
     * Creates a sample dataset.
     *
     * @return A sample dataset.
     */
    private CategoryDataset createDataset() {
        DefaultCategoryDataset result = new DefaultCategoryDataset();

        result.addValue(-10, "Colonne 1 (asth)", "");
        result.addValue(-20, "Colonne 1 (racine)", "");
        result.addValue(-10, "Colonne 1 (croute)", "");
        result.addValue(5, "Colonne 1 (sedeau)", "");

        result.addValue(-10, "Colonne 2 (asth)", "");
        result.addValue(-20, "Colonne 2 (racine)", "");
        result.addValue(-10, "Colonne 2 (croute)", "");
        result.addValue(5, "Colonne 2 (sedeau)", "");

        result.addValue(-10, "Colonne 3 (asth)", "");
        result.addValue(-20, "Colonne 3 (racine)", "");
        result.addValue(-10, "Colonne 3 (croute)", "");
        result.addValue(5, "Colonne 3 (sedeau)", "");

        result.addValue(-10, "Colonne 4 (asth)", "");
        result.addValue(-20, "Colonne 4 (racine)", "");
        result.addValue(-10, "Colonne 4 (croute)", "");
        result.addValue(5, "Colonne 4 (sedeau)", "");

        result.addValue(-10, "Colonne 4 (asth)", "");
        result.addValue(-20, "Colonne 4 (racine)", "");
        result.addValue(-10, "Colonne 4 (croute)", "");
        result.addValue(5, "Colonne 4 (sedeau)", "");

        result.addValue(-10, "Colonne 5 (asth)", "");
        result.addValue(-20, "Colonne 5 (racine)", "");
        result.addValue(-10, "Colonne 5 (croute)", "");
        result.addValue(5, "Colonne 5 (sedeau)", "");

        result.addValue(-10, "Colonne 6 (asth)", "");
        result.addValue(-20, "Colonne 6 (racine)", "");
        result.addValue(-10, "Colonne 6 (croute)", "");
        result.addValue(5, "Colonne 6 (sedeau)", "");

        result.addValue(-10, "Colonne 7 (asth)", "");
        result.addValue(-20, "Colonne 7 (racine)", "");
        result.addValue(-10, "Colonne 7 (croute)", "");
        result.addValue(5, "Colonne 7 (sedeau)", "");

        result.addValue(-10, "Colonne 8 (asth)", "");
        result.addValue(-20, "Colonne 8 (racine)", "");
        result.addValue(-10, "Colonne 8 (croute)", "");
        result.addValue(5, "Colonne 8 (sedeau)", "");

        return result;
    }

    /**
     * Creates a sample chart.
     *
     * @param dataset  the dataset for the chart.
     *
     * @return A sample chart.
     */
    private JFreeChart createChart(final CategoryDataset dataset) {

        final JFreeChart chart = ChartFactory.createStackedBarChart(
            "Isostasie",  // chart title
            "Category",                  // domain axis label
            "Profondeur (km)",                // range axis label
            dataset,                     // data
            PlotOrientation.VERTICAL,    // the plot orientation
            true,                        // legend
            true,                        // tooltips
            false                        // urls
        );

        GroupedStackedBarRenderer renderer = new GroupedStackedBarRenderer();

        KeyToGroupMap map = new KeyToGroupMap("G1");
        map.mapKeyToGroup("Colonne 1 (asth)", "G1");
        map.mapKeyToGroup("Colonne 1 (racine)", "G1");
        map.mapKeyToGroup("Colonne 1 (croute)", "G1");
        map.mapKeyToGroup("Colonne 1 (sedeau)", "G1");
        map.mapKeyToGroup("Colonne 2 (asth)", "G2");
        map.mapKeyToGroup("Colonne 2 (racine)", "G2");
        map.mapKeyToGroup("Colonne 2 (croute)", "G2");
        map.mapKeyToGroup("Colonne 2 (sedeau)", "G2");
        map.mapKeyToGroup("Colonne 3 (asth)", "G3");
        map.mapKeyToGroup("Colonne 3 (racine)", "G3");
        map.mapKeyToGroup("Colonne 3 (croute)", "G3");
        map.mapKeyToGroup("Colonne 3 (sedeau)", "G3");
        map.mapKeyToGroup("Colonne 4 (asth)", "G4");
        map.mapKeyToGroup("Colonne 4 (racine)", "G4");
        map.mapKeyToGroup("Colonne 4 (croute)", "G4");
        map.mapKeyToGroup("Colonne 4 (sedeau)", "G4");
        map.mapKeyToGroup("Colonne 5 (asth)", "G5");
        map.mapKeyToGroup("Colonne 5 (racine)", "G5");
        map.mapKeyToGroup("Colonne 5 (croute)", "G5");
        map.mapKeyToGroup("Colonne 5 (sedeau)", "G5");
        map.mapKeyToGroup("Colonne 6 (asth)", "G6");
        map.mapKeyToGroup("Colonne 6 (racine)", "G6");
        map.mapKeyToGroup("Colonne 6 (croute)", "G6");
        map.mapKeyToGroup("Colonne 6 (sedeau)", "G6");
        map.mapKeyToGroup("Colonne 7 (asth)", "G7");
        map.mapKeyToGroup("Colonne 7 (racine)", "G7");
        map.mapKeyToGroup("Colonne 7 (croute)", "G7");
        map.mapKeyToGroup("Colonne 7 (sedeau)", "G7");
        map.mapKeyToGroup("Colonne 8 (asth)", "G8");
        map.mapKeyToGroup("Colonne 8 (racine)", "G8");
        map.mapKeyToGroup("Colonne 8 (croute)", "G8");
        map.mapKeyToGroup("Colonne 8 (sedeau)", "G8");
        renderer.setSeriesToGroupMap(map);

        renderer.setItemMargin(0.0);
        renderer.setMaximumBarWidth(0.20);
        renderer.setBarPainter(new StandardBarPainter());

        renderer.setSeriesPaint(3, new Color(255, 192, 0));
        renderer.setSeriesPaint(7, new Color(255, 192, 0));
        renderer.setSeriesPaint(11, new Color(255, 192, 0));
        renderer.setSeriesPaint(15, new Color(255, 192, 0));
        renderer.setSeriesPaint(19, new Color(255, 192, 0));
        renderer.setSeriesPaint(23, new Color(255, 192, 0));
        renderer.setSeriesPaint(27, new Color(255, 192, 0));
        renderer.setSeriesPaint(31, new Color(255, 192, 0));

        renderer.setSeriesPaint(0, new Color(79, 129, 189));
        renderer.setSeriesPaint(4, new Color(79, 129, 189));
        renderer.setSeriesPaint(8, new Color(79, 129, 189));
        renderer.setSeriesPaint(12, new Color(79, 129, 189));
        renderer.setSeriesPaint(16, new Color(79, 129, 189));
        renderer.setSeriesPaint(20, new Color(79, 129, 189));
        renderer.setSeriesPaint(24, new Color(79, 129, 189));
        renderer.setSeriesPaint(28, new Color(79, 129, 189));

        renderer.setSeriesPaint(1, new Color(192, 80, 77));
        renderer.setSeriesPaint(5, new Color(192, 80, 77));
        renderer.setSeriesPaint(9, new Color(192, 80, 77));
        renderer.setSeriesPaint(13, new Color(192, 80, 77));
        renderer.setSeriesPaint(17, new Color(192, 80, 77));
        renderer.setSeriesPaint(21, new Color(192, 80, 77));
        renderer.setSeriesPaint(25, new Color(192, 80, 77));
        renderer.setSeriesPaint(29, new Color(192, 80, 77));

        renderer.setSeriesPaint(2, Color.GRAY);
        renderer.setSeriesPaint(6, Color.GRAY);
        renderer.setSeriesPaint(10, Color.GRAY);
        renderer.setSeriesPaint(14, Color.GRAY);
        renderer.setSeriesPaint(18, Color.GRAY);
        renderer.setSeriesPaint(22, Color.GRAY);
        renderer.setSeriesPaint(26, Color.GRAY);
        renderer.setSeriesPaint(30, Color.GRAY);

        SubCategoryAxis domainAxis = new SubCategoryAxis("");
        domainAxis.setCategoryMargin(0.05);
        domainAxis.addSubCategory("");
        domainAxis.addSubCategory("");
        domainAxis.addSubCategory("");
        domainAxis.addSubCategory("");
        domainAxis.addSubCategory("");
        domainAxis.addSubCategory("");
        domainAxis.addSubCategory("");
        domainAxis.addSubCategory("");
        CategoryPlot plot = (CategoryPlot) chart.getPlot();

        plot.setDomainAxis(domainAxis);
        //plot.setDomainAxisLocation(AxisLocation.TOP_OR_RIGHT);
        ValueMarker marker = new ValueMarker(0);
        marker.setLabel("Niveau zero");
        marker.setLabelAnchor(RectangleAnchor.CENTER);
        marker.setLabelTextAnchor(TextAnchor.CENTER);
        marker.setPaint(Color.GRAY);
        plot.addRangeMarker(marker);

        NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
        rangeAxis.setRange(-60, 10);
        plot.setRenderer(renderer);
        plot.setBackgroundPaint(Color.WHITE);
        plot.setFixedLegendItems(createLegendItems());
        return chart;

    }

    /**
     * Creates the legend items for the chart.  In this case, we set them manually because we
     * only want legend items for a subset of the data series.
     *
     * @return The legend items.
     */

    private LegendItemCollection createLegendItems() {
        LegendItemCollection result = new LegendItemCollection();
//        LegendItem item1 = new LegendItem("US", new Color(0x22, 0x22, 0xFF));
  //      LegendItem item2 = new LegendItem("Europe", new Color(0x22, 0xFF, 0x22));
    //    LegendItem item3 = new LegendItem("Asia", new Color(0xFF, 0x22, 0x22));
      //  LegendItem item4 = new LegendItem("Middle East", new Color(0xFF, 0xFF, 0x22));
//        result.add(item1);
  //      result.add(item2);
    //    result.add(item3);
      //  result.add(item4);
        return result;
    }

    // ****************************************************************************
    // * JFREECHART DEVELOPER GUIDE                                               *
    // * The JFreeChart Developer Guide, written by David Gilbert, is available   *
    // * to purchase from Object Refinery Limited:                                *
    // *                                                                          *
    // * http://www.object-refinery.com/jfreechart/guide.html                     *
    // *                                                                          *
    // * Sales are used to provide funding for the JFreeChart project - please    *
    // * support us so that we can continue developing free software.             *
    // ****************************************************************************

    /**
     * Starting point for the demonstration application.
     *
     * @param args  ignored.
     */
    public static void main(final String[] args) {
        final Isobarre demo = new Isobarre("Isostasie");
        demo.pack();
        RefineryUtilities.centerFrameOnScreen(demo);
        demo.setVisible(true);
    }

}

1 réponse

Utilisateur anonyme
9 avril 2013 à 13:46
Vous avez juste à mettre un ActionListener sur jButton1 et appeler getText() sur le JTextField pour récupérer son contenu et créer le bon Dataset pour JFreeChart.





















T.U.E.R (First Person Shooter créé par Julien Gouesse)
0
Rejoignez-nous