Обновить график с помощью JFreeChart и слайдера

У меня есть история времени для массивов, описывающих давление вдоль трубы. Таким образом, у меня есть массив значений давления по длине трубы для каждой дельты т. Я хочу нанести значения давления по длине трубы с помощью JFreeChart и выбрать, какая дельта t будет отображаться с помощью ползунка, чтобы всякий раз, когда пользователь перемещает ползунок, изображение обновлялось значениями из другой дельты. Я'm также сбрасывает плитку на давление в последней части трубы. Что происходит, так это то, что заголовок обновляется, это означает, что данные корректно обновляются, но кривая остается неизменной. Я прочитал все возможные темы на форумах и перепробовал все, что мог придумать, но этоне работает! Вот'Это код моего класса, который расширяет JPanel, в котором метод jSlider1StateChanged слышит об изменении положения ползунка, createChart создает новую диаграмму при запуске программы, а dataSetGen (int ndt) создает графикs новый набор данных на основе положения ползунка:

public class MyMainPanel extends JPanel {

  private JFreeChart jc;
  private OutputPipe op;
  private DefaultXYDataset ds; 
  private javax.swing.JFrame jFrame1;
  private javax.swing.JSlider jSlider1;
  private pipevisualizer.MyChartPanel pnlChartPanel;                       

  private void jSlider1StateChanged(javax.swing.event.ChangeEvent evt) {                                      
        int ndt = ((JSlider) evt.
                getSource()).
                getValue();
        System.out.println("Slider1: " + ((JSlider) evt.
                getSource()).
                getValue());

        dataSetGen(ndt);
        int a = 0;
        jc.fireChartChanged();
  }                

  private void dataSetGen(int ndt) {
        ArrayList opDtArray = op.getOpLit();
        OutputPipeDt opDt = opDtArray.get(ndt);

        double[] H = opDt.getH();
        double[] l = new double[H.length];
        double[] p = new double[H.length];
        double dX = op.getPipeLength() / H.length;
        double slope = op.getPipeSlope();
        double el = op.getPipeUSElev();

        for (int i = 0; i < H.length; i++) {
              l[i] = dX * i;
              p[i] = el - dX * slope * i;
        }

        double[][] dataH = new double[2][H.length];
        dataH[0] = l;
        dataH[1] = H;

        double[][] dataP = new double[2][H.length];
        dataP[0] = l;
        dataP[1] = p;

        ds = new DefaultXYDataset();
        ds.addSeries("pipe head", dataH);
        ds.addSeries("pipe profile", dataP);

        jc.setTitle("H[end] = " + Double.toString(dataH[1][l.length - 1]));
        jc.fireChartChanged();
  }

  private JFreeChart createChart(OutputPipe op, int ndt) {

        ArrayList opDtArray = op.getOpLit();
        OutputPipeDt opDt = opDtArray.get(ndt);

        double[] H = opDt.getH();
        double[] l = new double[H.length];
        double[] p = new double[H.length];
        double dX = op.getPipeLength() / H.length;
        double slope = op.getPipeSlope();
        double el = op.getPipeUSElev();

        for (int i = 0; i < H.length; i++) {
              l[i] = dX * i;
              p[i] = el - dX * slope * i;
        }

        double[][] dataH = new double[2][H.length];
        dataH[0] = l;
        dataH[1] = H;

        double[][] dataP = new double[2][H.length];
        dataP[0] = l;
        dataP[1] = p;

        DefaultXYDataset ds = new DefaultXYDataset();
        ds.addSeries("pipe head", dataH);
        ds.addSeries("pipe profile", dataP);


        JFreeChart chart = ChartFactory.createXYLineChart(
                "t = " + Double.toString(op.getOpLit().get(ndt).getT()),
                // chart title
                "X",
                // x axis label
                "Y",
                // y axis label
                ds,
                // data
                PlotOrientation.VERTICAL,
                true,
                // include legend
                true,
                // tooltips
                false // urls
                );

        return chart;
  }
}

Я думал, что любые изменения в наборах данных приведут к перерисовке графика. Извините, если код может быть слишком большим, чтобы быть на почте, но я нене знаю точно, какие части я должен вставить, чтобы быть более или менее ясным.

Ответы на вопрос(1)

Ваш ответ на вопрос