【问题标题】:Creating JfreeCharts in a for loop在 for 循环中创建 JfreeCharts
【发布时间】:2012-03-31 12:37:17
【问题描述】:

我正在从输入流中读取数据并将数据存储在数组中。现在如果有一些测试条件(虽然输入流没有完全读取我想创建一个图表)。

for (int i = 0; i < jsonMainArr.size(); i++) 
{ 
     JSONObject childJSONObject = jsonMainArr.getJSONObject(i);   
    String date1 = childJSONObject.getString("date");
    DateFormat forma=new SimpleDateFormat("yyyy-MM-dd");
    Date dre=forma.parse(date1);
    d[i]=dre;

    if(somecondition)
    {
        CandleStickChart chart = new CandleStickChart("Candle Stick Chart");
        chart.pack();
        RefineryUtilities.centerFrameOnScreen(chart);
        chart.setVisible(true);
    }
}

现在如果dre 是一个特定的数据,我想显示图表。我不想跳出 for 循环,因为其他数据(下一个公司的数据仍然需要解析)。我注意到这在循环内部不起作用,只能在循环外部起作用。我能做些什么来克服这个困难。

【问题讨论】:

  • 这里需要澄清一些事情:您是否在 awt/swing 框架上显示图表?是什么触发了这段代码的运行(是不是像点击这样的 UI 事件)?您希望图表显示多长时间?您希望用户确认/关闭它吗?
  • 目前我正在调试,所以当我在没有测试条件的情况下运行 main 时会触发它。我通过扩展应用程序框架并使用 setCONtentPane 方法来显示图形。
  • add() 方法“已被覆盖以根据需要转发到 contentPane。”—JFrame
  • 对不起,我不明白上面的评论是什么意思。

标签: java swing concurrency jfreechart


【解决方案1】:

在另一个线程上运行您的数据采集循环,例如SwingWorker。仅对已完成的模型调用 publish(),标记您要显示的模型。在process() 中显示图表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-08
    • 2016-05-29
    • 2018-04-02
    • 2015-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多