Ну, вы неправильно поняли, как работает рисование в JLabel
или соответствующем Graphics
-объекте.
На вашем JLabel
нет "уже нарисованных" линий, так как Graphics
-объект будет удален. paintComponent()
заново нарисует все линии.
В вашем коде вы устанавливаете цвет для всех линий перед рисованием.
Вам нужно сохранить цвет линии вместе с точками и изменить цвет при рисовании одной линии.
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
for (int i = 1; i < point.size(); i++) {
g2.setColor(colors.get(i));
g2.setStroke(brushes.get(i));
g2.draw(new Line2D.Float(point.get(i).x, point.get(i).y));
}
}
Ну, здесь вам нужно 3 списка, один для цвета, один для кисти и один для точек.
Возможно, вы подумаете о создании объекта, который содержит эти значения (например, "Linedesc(color, brush, point)
"), чтобы иметь только список, содержащий их ("point = new ArrayList<LineDesc>()
")