Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用jfreechart动态更新散点图_Java_Jfreechart - Fatal编程技术网

Java 如何使用jfreechart动态更新散点图

Java 如何使用jfreechart动态更新散点图,java,jfreechart,Java,Jfreechart,我应该模拟球的运动。情节中的斑点是我的球。现在,我已经生成了一个随机数据集,但稍后我将读取一个输入文件,该文件将连续给出球的位置 所以我的问题是,我怎样才能不断更新我的图表,让它看起来像球在移动 import java.awt.BasicStroke; import java.awt.Color; import java.awt.Shape; import java.awt.geom.Ellipse2D; //import java.security.PublicKey; import java

我应该模拟球的运动。情节中的斑点是我的球。现在,我已经生成了一个随机数据集,但稍后我将读取一个输入文件,该文件将连续给出球的位置

所以我的问题是,我怎样才能不断更新我的图表,让它看起来像球在移动

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Shape;
import java.awt.geom.Ellipse2D;
//import java.security.PublicKey;
import java.util.Random;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.NumberTickUnit;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;


public class visualize {

    private static XYSeriesCollection createDataset() {
            Random rgenX = new Random(); 
            Random rgenY = new Random();
            XYSeriesCollection dataset = new XYSeriesCollection();
            for (int i = 999; i >= 0; i-=10) {
            int x = rgenX.nextInt(i+1);
            int y = rgenY.nextInt(i+1);
            XYSeries series1 = new XYSeries(i);
            series1.add(x, y);
            dataset.addSeries(series1);
            }
            final XYSeries series3 = new XYSeries("line1");
            series3.add(300, 400);
            series3.add(500, 300);
            dataset.addSeries(series3);
            final XYSeries series4 = new XYSeries("line2");
            series4.add(500, 200);
            series4.add(700, 300);
            dataset.addSeries(series4);

            return dataset;
    }

private static JFreeChart createChart(XYSeriesCollection dataset) {
      JFreeChart chart = ChartFactory.createXYLineChart(
                "", // chart title
                "", // x axis label
                "", // y axis label
                dataset, // data  ***-----PROBLEM------***
                PlotOrientation.VERTICAL,
                false, // include legend
                true, // tooltips
                false // urls
                );
            XYPlot xyPlot = (XYPlot) chart.getPlot();
            final XYLineAndShapeRenderer renderer0 = new XYLineAndShapeRenderer();
            renderer0.setSeriesShapesVisible(100, false);
            renderer0.setSeriesShapesVisible(101, false);
            renderer0.setSeriesStroke(100, new BasicStroke(5.0f));
            renderer0.setSeriesStroke(101, new BasicStroke(5.0f));

            xyPlot.setRenderer(renderer0);

            Shape shape  = new Ellipse2D.Double(0,0,20,20);

            XYItemRenderer renderer = xyPlot.getRenderer();
            renderer.setBaseShape(shape);
            renderer.setBasePaint(Color.red);
            renderer.setSeriesPaint(100, Color.black);
            renderer.setSeriesPaint(101, Color.black);
            for (int i = 0; i < 99; i++) {
                renderer.setSeriesShape(i, shape);

            }
            NumberAxis domain = (NumberAxis) xyPlot.getDomainAxis();
            domain.setRange(0, 1000);
            domain.setTickUnit(new NumberTickUnit(50));
            domain.setVerticalTickLabels(true);
            NumberAxis range = (NumberAxis) xyPlot.getRangeAxis();
            range.setRange(0, 1000);
            range.setTickUnit(new NumberTickUnit(50));
            xyPlot.setBackgroundPaint(Color.white);

            return chart;
}

public static void main(String[] args) {
    // TODO Auto-generated method stub
    ChartFrame frame = new ChartFrame("DropBalls", createChart(createDataset()));
    frame.pack();
    frame.setVisible(true); 
}
}
import java.awt.BasicStroke;
导入java.awt.Color;
导入java.awt.Shape;
导入java.awt.geom.Ellipse2D;
//导入java.security.PublicKey;
导入java.util.Random;
导入org.jfree.chart.ChartFactory;
导入org.jfree.chart.ChartFrame;
导入org.jfree.chart.JFreeChart;
导入org.jfree.chart.axis.NumberAxis;
导入org.jfree.chart.axis.NumberTickUnit;
导入org.jfree.chart.plot.PlotOrientation;
导入org.jfree.chart.plot.XYPlot;
导入org.jfree.chart.renderer.xy.XYItemRenderer;
导入org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
导入org.jfree.data.xy.XYSeries;
导入org.jfree.data.xy.XYSeriesCollection;
公共类可视化{
私有静态XYSeriesCollection createDataset(){
Random rgenX=新的Random();
Random rgenY=新的Random();
XYSeriesCollection数据集=新的XYSeriesCollection();
对于(int i=999;i>=0;i-=10){
int x=rgenX.nextInt(i+1);
int y=rgenY.nextInt(i+1);
XYSeries系列1=新的XYSeries(i);
系列1.添加(x,y);
dataset.addSeries(系列1);
}
最终XYSeries系列3=新XYSeries(“第1行”);
系列3.添加(300400);
系列3.添加(500300);
dataset.addSeries(系列3);
最终XYSeries系列4=新XYSeries(“第2行”);
系列4.添加(500200);
系列4.添加(700300);
dataset.addSeries(系列4);
返回数据集;
}
私有静态JFreeChart createChart(XYSeriesCollection数据集){
JFreeChart chart=ChartFactory.createXYLineChart(
“”,//图表标题
“”,//x轴标签
“”,//y轴标签
数据集,//数据***----问题------***
PlotOrientation.VERTICAL,
false,//包含图例
true,//工具提示
false//url
);
XYPlot XYPlot=(XYPlot)chart.getPlot();
最终的XylineandShaperEnder渲染器0=新的XylineandShaperEnder();
渲染器0.setSeriesShapesVisible(100,false);
渲染器0.setSeriesShapesVisible(101,false);
渲染器0.设置经验行程(100,新基本行程(5.0f));
渲染器0.设置经验行程(101,新基本行程(5.0f));
setRenderer(渲染器0);
形状=新椭圆2d.双(0,0,20,20);
XYItemRenderer=xyPlot.getRenderer();
渲染器.setBaseShape(形状);
渲染器.setBasePaint(颜色:红色);
渲染器.setSeriesPaint(100,彩色.黑色);
渲染器.setSeriesPaint(101,颜色.黑色);
对于(int i=0;i<99;i++){
渲染器。设置经验形状(i,形状);
}
NumberAxis域=(NumberAxis)xyPlot.getDomainAxis();
domain.setRange(0,1000);
domain.setTickUnit(新的NumberTickUnit(50));
domain.setVerticalTickLabels(true);
NumberAxis range=(NumberAxis)xyPlot.getRangeAxis();
范围。设置范围(0,1000);
range.setTickUnit(新的NumberTickUnit(50));
xyPlot.setBackgroundPaint(颜色:白色);
收益表;
}
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
ChartFrame框架=新的图表框架(“DropBalls”,createChart(createDataset());
frame.pack();
frame.setVisible(true);
}
}
显示了更新按钮动作侦听器中散点图的一种方法。对于连续更新,请使用插图。

显示了更新按钮动作侦听器中散点图的一种方法。如需持续更新,请使用,如图所示