Verifica
This commit is contained in:
30
VerificaBlu/.gitignore
vendored
Normal file
30
VerificaBlu/.gitignore
vendored
Normal file
@@ -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
|
||||||
8
VerificaBlu/.idea/.gitignore
generated
vendored
Normal file
8
VerificaBlu/.idea/.gitignore
generated
vendored
Normal file
@@ -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
|
||||||
6
VerificaBlu/.idea/misc.xml
generated
Normal file
6
VerificaBlu/.idea/misc.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="17" project-jdk-type="JavaSDK">
|
||||||
|
<output url="file://$PROJECT_DIR$/out" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
8
VerificaBlu/.idea/modules.xml
generated
Normal file
8
VerificaBlu/.idea/modules.xml
generated
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/VerificaBlu.iml" filepath="$PROJECT_DIR$/VerificaBlu.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
6
VerificaBlu/.idea/vcs.xml
generated
Normal file
6
VerificaBlu/.idea/vcs.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="$PROJECT_DIR$/.." vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
11
VerificaBlu/VerificaBlu.iml
Normal file
11
VerificaBlu/VerificaBlu.iml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="JAVA_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||||
|
<exclude-output />
|
||||||
|
<content url="file://$MODULE_DIR$">
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||||
|
</content>
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
</component>
|
||||||
|
</module>
|
||||||
110
VerificaBlu/src/DisegnaFigura.java
Normal file
110
VerificaBlu/src/DisegnaFigura.java
Normal file
@@ -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<Shape> 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user