【问题标题】:JfreeChart not displaying before a click单击之前不显示 JfreeChart
【发布时间】:2014-02-04 09:56:52
【问题描述】:

我已经建立了一个显示 TabPanel。在这个阶段没有显示图表。当我点击一个按钮时,我会构建一个新图表并将其添加到面板中。但什么也没有发生。我必须点击面板才能显示图表。

所以我在包含 ChartPanel 但没有效果的 TabPanel 上放了一个 repaint()。我在这里错过了什么吗?

        if(myChart==null){
            myChart = new PortfolioChart(portfolioModel.getDataMatrix());
            add(myChart.createPanel(), BorderLayout.CENTER);
            repaint();
        }else{
            myChart.setPortfolio(portfolioModel.getDataMatrix());
            myChart.updateDataSet();

        }   

我应该把 repaint() 指令放在不同的地方吗?

【问题讨论】:

  • 有时无效();重绘();作品。如果仍然无法正常工作,也尝试调用 ChartPanel 的这些方法
  • 还要仔细检查您是否从 EDT 执行此操作。
  • 不幸的是,它仍然对我不起作用。
  • 我发现的唯一又脏又奇怪的解决方案是模拟数据集的更新。

标签: java jfreechart


【解决方案1】:

here 所示的完整示例中,每个选项卡都有一个ChartPanel。每个图表的数据模型都定期更新,而不是替换图表,并且监听图表会重新绘制自己作为响应。

【讨论】:

  • 我的结构和你的差不多……但是,我只在按下按钮时添加图表。在您的算法中,所有图表都是在 Pack() 指令之前构建的。问题可能就在那里。
  • 我的“添加”按钮在按下按钮时在pack() 之后添加了一个新图表;你不应该revalidate()
猜你喜欢
  • 1970-01-01
  • 2022-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-28
  • 1970-01-01
  • 2012-08-01
  • 1970-01-01
相关资源
最近更新 更多