Saturday, May 31, 2025

[JAVA] LINE DRAG MOUSE

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.Line2D;
import java.util.ArrayList;
import java.util.List;

public class DrawLineDrag extends JPanel {
    private List<Line2D> lines = new ArrayList<>();
    private Point prevPoint;

    public DrawLineDrag() {
        addMouseListener(new MouseAdapter() {
            @Override
            public void mousePressed(MouseEvent e) {
                prevPoint = e.getPoint();
            }
        });

        addMouseMotionListener(new MouseMotionAdapter() {
            @Override
            public void mouseDragged(MouseEvent e) {
                 if (prevPoint != null) {
                    Point currentPoint = e.getPoint();
                    lines.add(new Line2D.Double(prevPoint, currentPoint));
                    prevPoint = currentPoint;
                    repaint();
                }
            }
        });
    }


    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
         Graphics2D g2d = (Graphics2D) g;
        g2d.setColor(Color.BLACK); // Set line color
        for (Line2D line : lines) {
            g2d.draw(line);
        }
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame("Draw Lines");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(new DrawLineDrag());
        frame.setSize(400, 300);
        frame.setVisible(true);
    }
}

No comments: