0

我创建了一个使用 JFreeChart 制作 XYLineChart 的应用程序(除其他外),但最近在 JFreeChart 中遇到了一个错误,即如果图表的 x 或 y 轴设置为非常小的范围(低值或值之间的最小差异x 或 y 轴),图表将照常绘制,但所述轴上的所有刻度标签都会消失。如果用户将图表放大得太远,也会发生这种情况。

我设法通过在我的应用程序的 UI 中添加一个按钮来解决这个问题,该按钮允许用户在制作或放大图表后刷新轴。此按钮的动作侦听器重新设置刻度标签,然后它们正确显示在轴上。

现在,我希望这可以自动完成,而不是使用我制作的按钮。为此,我需要将此代码放在图表面板创建中的某个位置,在 ChartPanel.zoom() 方法完成执行后立即执行该代码。

我的问题是,当用户放大图表时,zoom() 代码执行完成后会发生什么?下一步控制在哪里?或者,有没有办法在每次执行 zoom() 方法后添加几行代码?

如果有人有任何建议,请尽快告诉我。谢谢。

4

1 回答 1

0

我通过向对象添加 aPlotChangeListener来处理缩放事件。Plot这将在各种事件之后调用,其中之一是缩放。例如:

chart.getPlot().addChangeListener(new PlotChangeListener(){
  @Override
  public void plotChanged(PlotChangeEvent event)
  {
    System.out.println("I am called after a zoom event (and some other events too).");
  }});
于 2014-03-21T12:13:13.990 回答