Atualizar gráfico com JFreeChart e slider

Eu tenho um histórico de tempo para matrizes descrevendo a pressão ao longo de um tubo. Então eu tenho uma matriz de valores de pressão ao longo do comprimento do tubo para cada delta t. Eu quero plotar as pressões ao longo do comprimento do pipe com JFreeChart e escolher qual delta t plotar com um controle deslizante, para que sempre que o usuário mover o controle deslizante, o gráfico seja atualizado com valores de um delta t diferente. Eu também estou redefinindo a telha para ser a pressão na última parte do tubo. O que acontece é que o título é atualizado, o que significa que os dados estão sendo atualizados corretamente, mas a curva permanece a mesma. Eu li todos os tópicos possíveis em fóruns e tentei tudo que pude pensar, mas não está funcionando! Aqui está o código da minha classe que estende o JPanel, no qual o método jSlider1StateChanged ouve a mudança na posição do slider, createChart cria um novo gráfico quando o programa é iniciado e dataSetGen (int ndt) gera o novo dataset do gráfico baseado na posição do controle deslizante :

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<OutputPipeDt> 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<OutputPipeDt> 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;
  }
}

Eu pensei que qualquer alteração nos conjuntos de dados faria com que o gráfico fosse redesenhado. Desculpe se o código pode ser grande para estar no post, mas eu não sei exatamente quais partes devo colar para ser mais ou menos claro.

questionAnswers(1)

yourAnswerToTheQuestion