Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.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生成动态图_Java_Swing_Charts_Jfreechart - Fatal编程技术网

如何从海量Java生成动态图

如何从海量Java生成动态图,java,swing,charts,jfreechart,Java,Swing,Charts,Jfreechart,我有一份实时构建动态图形的工作,例如,我发现下面的JFreeChart链接会带来,但我不知道如何使用这个示例,可以告诉在何处放置带有数据的数组,然后,例如,得出3的赔率周期延迟,并使用数组中的数据构建图形 特别是,我必须在何处写入周期,以及用什么在图形上查看massive的值?JFreeChart实现org.jfree.ui.Drawable,以便您可以创建自定义JPanel,覆盖公共空白绘制(Graphics g),并使用此方法创建JFreeChart,然后可以使用arg Graphic调用

我有一份实时构建动态图形的工作,例如,我发现下面的JFreeChart链接会带来,但我不知道如何使用这个示例,可以告诉在何处放置带有数据的数组,然后,例如,得出3的赔率周期延迟,并使用数组中的数据构建图形


特别是,我必须在何处写入周期,以及用什么在图形上查看massive的值?

JFreeChart实现org.jfree.ui.Drawable,以便您可以创建自定义JPanel,覆盖公共空白绘制(Graphics g),并使用此方法创建JFreeChart,然后可以使用arg Graphic调用JfreeChart对象的draw方法

数据将在何时更改重新绘制此JPanel

以下是您希望的示例:

/** Your custom JPanel */
public class MyPanel extends JPanel{
Random random =new Random(System.currentTimeMillis()); //this is only to simulate change data

public MyPanel(){
    //simulation change data
    new Thread(){
        public void run(){
            while(true){
            try {
                Thread.sleep(3000l);//in every 3 sec refresh
                Thread.yield();     // release processor 
                repaint();          //repaint panel with new data
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            }
        }
    }.start();
}

public void paint(Graphics g){
    //paint panel
    super.paint(g);
    // create chart
    JFreeChart lineChart = ChartFactory.createLineChart(
             "My Title",
             "Years","Number of Schools",
             createDataset(),
             PlotOrientation.VERTICAL,
             true,true,false);
    //draw chart on panel
    lineChart.draw((Graphics2D) g, this.getVisibleRect());
}

/** create data for chart */
private DefaultCategoryDataset createDataset( )
   {
      DefaultCategoryDataset dataset = new DefaultCategoryDataset( );
      dataset.addValue( random.nextInt(100) , "schools" , "1970" );
      dataset.addValue( random.nextInt(100) , "schools" , "1980" );
      dataset.addValue( random.nextInt(100) , "schools" ,  "1990" );
      dataset.addValue( random.nextInt(100) , "schools" , "2000" );
      dataset.addValue( random.nextInt(100) , "schools" , "2010" );
      dataset.addValue( random.nextInt(100) , "schools" , "2014" );
      return dataset;
   }
}

在JFreeChart中,动态图表的核心是监听视图——如果您更新模型,监听视图将相应地更新自身。在所引用的示例中,Swing
计时器
调用
ActionListener
的实现,以定期向
时间序列
添加新值。您的代码也会这样做。类似的方法也适用于
DynamicMiseriesCollection
。要在后台处理数据,请使用
SwingWoker
,如图所示。

“这是代码”问题是什么?请注意,“我有一份工作…”引出了一个要求(对您而言)。你的问题是什么(对我们来说)?我必须在哪里写循环,用什么在图上看到massible的值?问题是“我必须在哪里写循环,用什么在图上看到massible的值?”(我甚至不确定我是否理解这一点,但至少这是一个问题。)请不要简单地剪切和粘贴你的旧代码;编辑您的问题,以包括一个显示您当前方法的问题。与此上下文无关。如上所述。创建您的类,例如
类MyChartPanel扩展JPanel
覆盖方法
公共无效绘制(图形g)
。在此方法中,将图形强制转换为图形2D。创建JFreeChart对象,如示例所示。使用方法draw()。我认为您必须创建扩展类
java.awt.geom.Rectangle2D
,以获得JPanel的大小。“Swing程序应该覆盖
paintComponent()
,而不是覆盖
paint()
”<代码>图表面板已为您完成此操作。