diff --git a/VerificaBlu/.gitignore b/VerificaBlu/.gitignore
new file mode 100644
index 0000000..13275f1
--- /dev/null
+++ b/VerificaBlu/.gitignore
@@ -0,0 +1,30 @@
+### IntelliJ IDEA ###
+out/
+!**/src/main/**/out/
+!**/src/test/**/out/
+.kotlin
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+bin/
+!**/src/main/**/bin/
+!**/src/test/**/bin/
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store
\ No newline at end of file
diff --git a/VerificaBlu/.idea/.gitignore b/VerificaBlu/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/VerificaBlu/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/VerificaBlu/.idea/misc.xml b/VerificaBlu/.idea/misc.xml
new file mode 100644
index 0000000..07115cd
--- /dev/null
+++ b/VerificaBlu/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/VerificaBlu/.idea/modules.xml b/VerificaBlu/.idea/modules.xml
new file mode 100644
index 0000000..0643322
--- /dev/null
+++ b/VerificaBlu/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/VerificaBlu/.idea/vcs.xml b/VerificaBlu/.idea/vcs.xml
new file mode 100644
index 0000000..6c0b863
--- /dev/null
+++ b/VerificaBlu/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/VerificaBlu/VerificaBlu.iml b/VerificaBlu/VerificaBlu.iml
new file mode 100644
index 0000000..c90834f
--- /dev/null
+++ b/VerificaBlu/VerificaBlu.iml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/VerificaBlu/src/DisegnaFigura.java b/VerificaBlu/src/DisegnaFigura.java
new file mode 100644
index 0000000..36d2cf2
--- /dev/null
+++ b/VerificaBlu/src/DisegnaFigura.java
@@ -0,0 +1,110 @@
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.*;
+import java.awt.geom.Ellipse2D;
+
+public class DisegnaFigura {
+
+ public static void main(String[] args) {
+ SwingUtilities.invokeLater(DisegnaFigura::creaGUI);
+ }
+ private static void creaGUI() {
+ JFrame f = new JFrame("DisegnoSuperPazzoSgravato");
+ f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+ f.setLayout(new BorderLayout()); // layout dei brordi per rendere meno storpia la finestra
+ JPanel ctrl = new JPanel();
+
+ JTextField wtf = new JTextField(5);
+ JTextField htf = new JTextField(5);
+
+ JButton btnSq = new JButton("Quadrato");
+ JButton btnCirc = new JButton("Cerchio");
+
+ ctrl.add(new JLabel("Larghezza:"));
+ ctrl.add(wtf);
+ ctrl.add(Box.createHorizontalStrut(10)); // Un pochetto di spaziatura per rendere il tutto più leggibile
+ ctrl.add(new JLabel("Altezza:"));
+ ctrl.add(htf);
+ ctrl.add(Box.createHorizontalStrut(20)); // Un pochetto di spaziatura per rendere il tutto più leggibile
+ ctrl.add(btnSq);
+ ctrl.add(btnCirc);
+
+ f.add(ctrl, BorderLayout.NORTH);
+ DrawPanel dp = new DrawPanel(wtf, htf);
+ f.add(dp, BorderLayout.CENTER);
+ // la freccetta è una lambda per rendere più snello il codice: e -> indica cosa eseguire in caso che quella azione sia verificata
+ btnSq.addActionListener(e -> dp.setFigura("quadrato"));
+ btnCirc.addActionListener(e -> dp.setFigura("cerchio"));
+
+ f.pack(); //ridimnezionamento
+ f.setLocationRelativeTo(null);
+ f.setVisible(true); // Rendere visibile la finestra
+ }
+
+ private static class DrawPanel extends JPanel {
+ private String prossima = null;
+ private final JTextField wtf, htf; // Campi di testo di larghezza e altezza
+
+ DrawPanel(JTextField wtf, JTextField htf) {
+ this.wtf = wtf;
+ this.htf = htf;
+ setBackground(Color.WHITE); // Sfondo bianco perchè si
+ // Evento del click click click click click del mouse
+ addMouseListener(new MouseAdapter() {
+ @Override
+ public void mouseClicked(MouseEvent e) {
+ if (prossima == null) return; // Non fae niente se l'utentew non ha selezionato la modalità
+
+ int w = parseInt(wtf.getText(), 50); // Traforma la stringa ad intero, se è vuota prende 50 come valore
+ int h = parseInt(htf.getText(), 50); // Traforma la stringa ad intero, se è vuota prende 50 come valore
+ int x = e.getX(); // x del mouse
+ int y = e.getY(); // y del mouse
+
+ if (prossima.equals("quadrato")) {
+ addShape(new Rectangle(x, y, w, h)); // fai un rettangolo/quadrato
+ } else {
+ addShape(new Ellipse2D.Double(x, y, w, h)); //altrimenti disegna un ellisse
+ }
+ prossima = null;
+ }
+ });
+ }
+ // Modo più carinino per impostrare òla figura
+ void setFigura(String fig) {
+ this.prossima = fig;
+ }
+ // Forme nella finestra
+ private final java.util.List shapes = new java.util.ArrayList<>();
+ private void addShape(Shape s) {
+ shapes.add(s);
+ repaint();
+ }
+ @Override
+ protected void paintComponent(Graphics g) {
+ super.paintComponent(g);
+ Graphics2D g2 = (Graphics2D) g.create();
+ try {
+ g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
+ RenderingHints.VALUE_ANTIALIAS_ON); // In teoria con l'antialiasing non dovrebbe essere spigolosa la figura
+ // Imposta il colore delle figrure per capire meglio se si tratta di un cerchio o di un rettangolo
+ for (Shape s : shapes) {
+ if (s instanceof Rectangle)
+ g2.setColor(Color.BLUE);
+ else
+ g2.setColor(Color.RED);
+ g2.fill(s); // ripempie la figura col colorew selezionato
+ }
+ } finally {
+ g2.dispose(); // liberazioniamo le risorse una volta finizionato il disegno della figura
+ }
+ }
+ // Coinvertire una stringa a intero
+ private static int parseInt(String txt, int defaultVal) {
+ try {
+ return Integer.parseInt(txt.trim());
+ } catch (NumberFormatException e) {
+ return defaultVal;
+ }
+ }
+ }
+}