Попробуйте это. Объяснения будут получены, когда вы ознакомитесь с руководствами по рисованию или обратитесь к API Java. Я использовал mouseListener
вместо кнопки. Это др aws круг вокруг, где вы нажимаете кнопку.
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.RenderingHints;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class Main extends JPanel {
int width = 500;
int height = 500;
JFrame frame = new JFrame();
int x;
int y;
int diameter = 60;
List<Point> points = new ArrayList<>();
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> new Main());
}
public Main() {
setPreferredSize(new Dimension(width, height));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBackground(Color.white);
addMouseListener(new MyMouseListener());
frame.add(this);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g.create();
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setColor(Color.blue);
g2d.setStroke(new BasicStroke(3));
for(Point p : points) {
g2d.drawOval(p.x,p.y, diameter,diameter);
}
}
private class MyMouseListener extends MouseAdapter {
public void mouseClicked(MouseEvent me) {
x = me.getX()-diameter/2;
y = me.getY()-diameter/2;
points.add(new Point(x,y));
repaint();
}
}
}