Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class JPaintablePanel extends ChartPanel {
- private AlgorithmManager algoManager;
- private static DefaultXYDataset dt = new DefaultXYDataset();
- private static JFreeChart chart = createChart(JPaintablePanel.dt);
- // public DefaultXYDataset dataset = new DefaultXYDataset();
- private DefaultXYDataset dataset = JPaintablePanel.dt;
- private ParametersData data;
- private int iterations, periods;
- private int percent = 10;
- double[][] series;
- private static final Random random = new Random();
- // private ChartPanel embedPanel;
- public JPaintablePanel() {
- // embedPanel = new ChartPanel(JPaintablePanel.chart, false);
- // add(embedPanel);
- super(JPaintablePanel.chart, false);
- }
- public void setAlgorithmManager(AlgorithmManager man, ParametersData d) {
- this.algoManager = man;
- data = d;
- iterations = (int) data.getNumberOfIterations();
- periods = iterations / percent;
- // System.out.println(periods + ", ite=" + iterations);
- series = new double[2][periods];
- for (int i = 0; i < periods; i++) {
- series[0][i] = (double) i;
- series[1][i] = 0;
- }
- dataset.addSeries("Series0", series);
- }
- public void start() {
- TwoWorker task = new TwoWorker();
- task.execute();
- }
- private class TwoWorker extends SwingWorker<Double, Double> {
- int it = 0;
- @Override
- protected Double doInBackground() throws Exception {
- double x = 0.0;
- for (int i = 0; i < periods; i++) {
- // x = x - (((x * x - 2) / (2 * x)));
- // // setProgress(i * (100 / N));
- // System.out.println("Publish:" + Double.valueOf(x));
- x = random.nextDouble() * 10.0;
- publish(Double.valueOf(x));
- Thread.sleep(300); // simulate latency
- }
- System.out.println("Zwracam:" + Double.valueOf(x));
- return Double.valueOf(x);
- }
- @Override
- protected void process(java.util.List<Double> chunks) {
- for (double d : chunks) {
- series[1][it++] = d;
- dataset.removeSeries("Series0");
- dataset.addSeries("Series0", series);
- }
- }
- }
- private static JFreeChart createChart(XYDataset dataset) {
- // create the chart...
- JFreeChart chart = ChartFactory.createXYLineChart(null, // chart title
- "Ilość kroków", // domain axis label
- "Odległość", // range axis label
- dataset, // initial series
- PlotOrientation.VERTICAL, // orientation
- true, // include legend
- true, //
- false //
- );
- chart.setBackgroundPaint(Color.white);
- XYPlot plot = (XYPlot) chart.getPlot();
- plot.setBackgroundPaint(new Color(0xffffe0)); //
- plot.setDomainGridlinesVisible(true); //
- plot.setDomainGridlinePaint(Color.lightGray); //
- plot.setRangeGridlinePaint(Color.lightGray); //
- //
- TickUnitSource ticks = NumberAxis.createIntegerTickUnits();
- NumberAxis domain = (NumberAxis) plot.getDomainAxis();
- domain.setStandardTickUnits(ticks);
- NumberAxis range = (NumberAxis) plot.getRangeAxis();
- range.setStandardTickUnits(ticks);
- //
- XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer(true, true);
- plot.setRenderer(renderer);
- renderer.setBaseItemLabelPaint(Color.blue);
- renderer.setBaseShapesVisible(true); //
- renderer.setBaseShapesFilled(true); //
- // set the renderer's stroke
- Stroke stroke = new BasicStroke(1.5f, BasicStroke.CAP_ROUND,
- BasicStroke.JOIN_BEVEL); //
- renderer.setBaseOutlineStroke(stroke);
- // renderer.setBasePaint(Color.RED);
- //
- NumberFormat format = NumberFormat.getNumberInstance();
- format.setMaximumFractionDigits(2);
- XYItemLabelGenerator generator = new StandardXYItemLabelGenerator(
- StandardXYItemLabelGenerator.DEFAULT_ITEM_LABEL_FORMAT, format,
- format);
- renderer.setBaseItemLabelGenerator(generator);
- renderer.setBaseItemLabelsVisible(true);
- // XYItemRenderer rende = chart.getXYPlot().getRenderer();
- // rende.setSeriesPaint(0, Color.blue);
- // rende.setSeriesPaint(1, new Color(0xffffe0));
- return chart;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement