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);
}
}
A voir également:
Modifier valeurs d'un stackedbarchart à partir d'un jtextfield
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.