codice:
import java.awt.BasicStroke;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.LinkedHashMap;
import java.util.Set;
import java.util.Vector;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.DateAxis;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.time.DateRange;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
import supporto.HashMapClienti;
import supporto.HashMapConti;
import com.mcsolution.beans.Conti;
import com.mcsolution.beans.OperazioneCliente;
import com.mcsolution.beans.OperazioneFornitore;
/**
* A simple demonstration application showing how to create a line chart using data from a
* {@link CategoryDataset}.
*/
public class LineChartDemo1 extends JFrame {
/**
* Creates a new demo.
*
* @param title the frame title.
* @throws ParseException
*/
private JSlider slider;
public DecimalFormat integerFormatter = new DecimalFormat("00");
private DateAxis domainAxis;
public LineChartDemo1(){
}
public LineChartDemo1(final String title,HashMapConti conti,LinkedHashMap<String,OperazioneCliente> clienti,Vector<OperazioneFornitore> fornitori,String data) throws ParseException {
final CategoryDataset dataset = createDataset(data,conti,clienti);
final JFreeChart chart = createChart(dataset);
final ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new Dimension(1200, 800));
chartPanel.setFont(new Font("Century Gothic",Font.PLAIN, 1));
chartPanel.setDomainZoomable(true);
chartPanel.setRangeZoomable(true);
JScrollPane scrollPane = new JScrollPane(chartPanel);
scrollPane.setPreferredSize(new Dimension(800,800));
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
this.add(scrollPane);
this.pack();
this.setVisible(true);
}
/**
* Creates a sample dataset.
*
* @return The dataset.
* @throws ParseException
*/
private CategoryDataset createDataset(String data,HashMapConti conti,LinkedHashMap<String,OperazioneCliente> clienti) throws ParseException {
// row keys...
final String series1 = "Costi";
final String series2 = "Ingrosso";
final String series3 = "Third";
GregorianCalendar calendario = new GregorianCalendar();
java.util.Date vecchiaData = new SimpleDateFormat("dd-MM-yyyy").parse(data);
// create the dataset...
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
// calendario.set(vecchiaData.getDate(), vecchiaData.getMonth(), vecchiaData.getYear());
calendario.setGregorianChange(vecchiaData);
for (int i=1; i<=calendario.getActualMaximum(Calendar.DAY_OF_MONTH); i++) {
// imposto il giorno
dataset.addValue(0, series2, i+"");
}
// Set<String> keySet = conti.keySet();
// for(Object key:keySet){
// Conti value = conti.get(key);
// dataset.addValue(-1*value.getTotale(), series1, key.toString());
// }
//
// Set<String> keySet2 = clienti.keySet();
// for(Object key:keySet2){
// OperazioneCliente value = clienti.get(key);
// dataset.addValue(value.getSommaAvere(), series2, key.toString());
// }
return dataset;
}
/**
* Creates a sample chart.
*
* @param dataset a dataset.
*
* @return The chart.
*/
private JFreeChart createChart(final CategoryDataset dataset) {
// create the chart...
final JFreeChart chart = ChartFactory.createLineChart(
"Line Chart Demo 1", // chart title
"Type", // domain axis label
"Value", // range axis label
dataset, // data
PlotOrientation.VERTICAL, // orientation
false, // include legend
true, // tooltips
false // urls
);
chart.setBackgroundPaint(Color.white);
final CategoryPlot plot = (CategoryPlot) chart.getPlot();
plot.setBackgroundPaint(Color.lightGray);
plot.setRangeGridlinePaint(Color.white);
// customise the range axis...
final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
//rangeAxis.setAutoRangeIncludesZero(true);
rangeAxis.setLabelFont(new Font("Century Gothic" ,Font.BOLD, 33));
// customise the renderer...
final LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot.getRenderer();
renderer.setBaseItemLabelFont(new Font("Century Gothic" ,Font.BOLD, 33));
// renderer.setDrawShapes(true);
renderer.setSeriesStroke(
0, new BasicStroke(
2.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND,
1.0f, new float[] {10.0f, 6.0f}, 0.0f
)
);
renderer.setSeriesStroke(
1, new BasicStroke(
2.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND,
1.0f, new float[] {6.0f, 6.0f}, 0.0f
)
);
renderer.setSeriesStroke(
2, new BasicStroke(
2.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND,
1.0f, new float[] {2.0f, 6.0f}, 0.0f
)
);
// OPTIONAL CUSTOMISATION COMPLETED.
return chart;
}
}
mi potete aiutare?