1 package formacurvilineairregolarechiusa;
2
3 import javax.swing.*;
4 import java.awt.*;
5 import java.awt.event.MouseAdapter;
6 import java.awt.event.MouseEvent;
7 import java.awt.geom.Path2D;
8
9 public class FormaCurvilineaIrregolareChiusa {
10 public static void main(String[] args) {
11 SwingUtilities.invokeLater(() -> {
12 JFrame frame = new JFrame("Forma Curvilinea Irregolare Chiusa");
13 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
14 frame.add(new CustomPanel());
15 frame.setSize(500, 500);
16 frame.setVisible(true);
17 });
18 }
19
20 static class CustomPanel extends JPanel {
21 private boolean clicked = false;
22 private Path2D path;
23
24 CustomPanel() {
25 path = createPath();
26 addMouseListener(new MouseAdapter() {
27 @Override
28 public void mouseClicked(MouseEvent e) {
29 if (path.contains(e.getPoint())) {
30 clicked = !clicked;
31 repaint();
32 }
33 }
34 });
35 }
36
37 private Path2D createPath() {
38 Path2D path = new Path2D.Double();
39
40 path.moveTo(100, 200);
41
42 path.curveTo(150, 100, 250, 100, 300, 200);
43
44 path.curveTo(350, 300, 250, 400, 200, 300);
45
46 path.curveTo(150, 400, 100, 300, 100, 200);
47 path.closePath();
48 return path;
49 }
50
51 @Override
52 protected void paintComponent(Graphics g) {
53 super.paintComponent(g);
54 Graphics2D g2d = (Graphics2D) g;
55 g2d.setColor(Color.BLACK);
56
57 if (clicked) {
58 g2d.setStroke(new BasicStroke(5));
59 } else {
60 g2d.setStroke(new BasicStroke(1));
61 }
62
63 g2d.draw(path);
64 }
65 }
66 } |