Кажется, что это происходит во время вызова метода repaint ()
iterationDeLigne++;
Метод рисования только для рисования. Вам не следует изменять свойство вашего класса в методе рисования, потому что вы не можете контролировать, когда или как часто Swing будет перекрашивать компонент.
Я действительно не знаю, что вы пытаетесь сделать, но в целом метод paintComponent () должен:
- вызывает super.paintComponent (...) в качестве первого оператора для очистки фона
- Выполните итерацию по списку ArrayList, чтобы перекрасить все точки в списке.
Кроме того, перед тем, как задать такой вопрос, сделайте некоторую базовую отладку и сообщите нам точное утверждение, вызывающее проблему. Трассировка исключений сообщит вам номер строки оператора, вызвавшего проблему.
Помогает ли вам отладка, вместо использования кода вроде:
g.drawLine((int)locationDepart.get(iterationDeLigne).getX(), (int)locationDepart.get(iterationDeLigne).getY(), (int)locationArrivee.get(iterationDeLigne).getX(), (int)locationArrivee.get(iterationDeLigne).getY());
Мало того, что приведенный выше код не помещается в одну строку, вы не можете сказать, где проблема в утверждении.
Так что упростите код до чего-то вроде:
Point depart = locationDepart.get( iterationDeLigne );
Point arrivee = locationArrivee.get( iterationDeLigne );
g.drawLine(depart.x, depart.y, arrive.x, arrive,y);
Теперь вы будете знать, если проблема в том, когда вы обращаетесь к любому из методов ArrayLists или drawLine (..). Его легче отладить, так как вы также можете отобразить значение каждой переменной.