From ce29e454ccebd973851050b483b394be8b731a0b Mon Sep 17 00:00:00 2001 From: Vichingo455 Date: Fri, 14 Nov 2025 09:35:30 +0100 Subject: [PATCH] Verifica --- VerificaBlu/.gitignore | 30 ++++++++ VerificaBlu/.idea/.gitignore | 8 +++ VerificaBlu/.idea/misc.xml | 6 ++ VerificaBlu/.idea/modules.xml | 8 +++ VerificaBlu/.idea/vcs.xml | 6 ++ VerificaBlu/VerificaBlu.iml | 11 +++ VerificaBlu/src/DisegnaFigura.java | 110 +++++++++++++++++++++++++++++ 7 files changed, 179 insertions(+) create mode 100644 VerificaBlu/.gitignore create mode 100644 VerificaBlu/.idea/.gitignore create mode 100644 VerificaBlu/.idea/misc.xml create mode 100644 VerificaBlu/.idea/modules.xml create mode 100644 VerificaBlu/.idea/vcs.xml create mode 100644 VerificaBlu/VerificaBlu.iml create mode 100644 VerificaBlu/src/DisegnaFigura.java 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; + } + } + } +}