Java Swing рисует линии с помощью мыши и перетаскивает

Я хочу вернуть вопрос, который был задан ранее:Java рисовать линии, как мышь перемещается

«Я хотел бы добавить в свое приложение функцию, которая позволяет пользователю рисовать прямую линию, щелкая мышью в начальной точке и освобождая ее в конечной точке. Линия должна двигаться по мере движения мыши до тех пор, пока она не будет отпущена; аналогично тому, как линия может быть нарисована с помощью приложения Microsoft Paint.

Как можно реализовать это так, чтобы линия перекрашивалась по мере движения, не перекрашивая другие объекты, которые уже могут быть нарисованы в этой прямоугольной области? "

Вопрос: Как я могу нарисовать несколько линий со старыми линиями, которые еще там?

Это код, который работает для меня, но предыдущая строка стирается, как только вы рисуете новую:

public static void main(String args[]) throws Exception {
    JFrame f = new JFrame("Draw a Red Line");
    f.setSize(300, 300);
    f.setLocation(300, 300);
    f.setResizable(false);
    JPanel p = new JPanel() {
        Point pointStart = null;
        Point pointEnd   = null;
        {
            addMouseListener(new MouseAdapter() {
                public void mousePressed(MouseEvent e) {
                    pointStart = e.getPoint();
                }

                public void mouseReleased(MouseEvent e) {
                    pointStart = null;
                }
            });
            addMouseMotionListener(new MouseMotionAdapter() {
                public void mouseMoved(MouseEvent e) {
                    pointEnd = e.getPoint();
                }

                public void mouseDragged(MouseEvent e) {
                    pointEnd = e.getPoint();
                    repaint();
                }
            });
        }
        public void paint(Graphics g) {
            super.paint(g);
            if (pointStart != null) {
                g.setColor(Color.RED);
                g.drawLine(pointStart.x, pointStart.y, pointEnd.x, pointEnd.y);
            }
        }
    };
    f.add(p);
    f.setVisible(true); 
}

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

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