import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.util.ArrayList;
public class DrawPanel extends JPanel{
private ArrayList<Point> mP;
public DrawPanel(){
setBackground(Color.WHITE);
mP = new ArrayList<>();
addMouseListener(new MouseAdapter(){
@Override
public void mousePressed(MouseEvent event){
mP.add(event.getPoint());
repaint();
requestFocus();
}
});
addMouseMotionListener(new MouseMotionAdapter(){
@Override
public void mouseDragged(MouseEvent event){
mP.add(event.getPoint());
repaint();
}
});
}
@Override
public void paint(Graphics g) {
super.paint(g);
for (Point mP1 : mP) {
g.setColor(Color.BLACK);
g.fillOval(mP1.x - 4, mP1.y - 4, 6, 6);
}
}
public static void main(String[] args){
DrawPanel myCanvas = new DrawPanel( );
JFrame gF = new JFrame();
gF.setSize(300,300);
gF.setTitle("Paint Example");
gF.setLayout(new BorderLayout());
gF.add(myCanvas, BorderLayout.CENTER);
gF.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gF.setVisible(true);
}
}
This is fairly simple, just store Points and display then with the repaint(), you can also store a color array if you wanted to have multi color points.