Domanda creazione Rettangolo usando la classe Rectangle su java

Scienziatopazzo28

Utente Iron
11 Novembre 2021
2
1
0
4
Buon Pomeriggio, volevo capire solo come si potesse fare, dato che mi sto approcciando ora alla creazione di oggetti. Ci tengo a precisare che chiedo perché su internet ho trovato solo tutorial obsoleti ed il mio libro di riferimento si basa su java 7 e java 8.
 
Allora se ricordo bene Java 7 e 8 non ha supporto a moduli ma ha come ultima introduzione quella delle lambda expression. Quindi diciamo che il codice che ti propongo non utilizzerà moduli (che per la cronaca sono inutili in Java, opinione personale).

Iniziamo:

Una classe Rectangle è una classe Java che mantiene all'interno delle istanze i riferimenti geometrici di un rettangolo. Onestamente non capisco chi implementi una classe da scratch per disegnare un rettangolo quando il package di JavaFX fornisce una classe apposita.

Le classi da importare sono:

Java:
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.shape.Rectangle;

Ti spiego brevemente cosa fanno:
  1. Group è una classe che ha la funzione di collezione di componenti grafiche, al suo interno puoi metterci Rectangle, Circle o classi che implementano una funzione basata su Graphics2D per la gestione di componenti grafiche implementate da scratch.
  2. Scene ti identifica un riquadro riempibile di figure, vedila come se fosse il layout di una pagina web
  3. Stage è una classe che identifica il "foglio su cui disegnare", riprendendo nuovamente il contesto web, corrisponde ad una pagina HTML in cui inserire componenti
  4. Rectangle è, come puoi immaginare, un rettangolo drawable.
Ora vediamo come applicare tutte le classi e disegnare un rettangolo.

Java:
public void start(Stage stage) { 
      //Drawing a Rectangle 
      Rectangle rectangle = new Rectangle();  
     
      //Setting the properties of the rectangle 
      rectangle.setX(150.0f); 
      rectangle.setY(75.0f); 
      rectangle.setWidth(300.0f); 
      rectangle.setHeight(150.0f);      
         
      //Creating a Group object  
      Group root = new Group(rectangle); 
         
      //Creating a scene object 
      Scene scene = new Scene(root, 600, 300);  
     
      //Setting title to the Stage 
      stage.setTitle("Drawing a Rectangle"); 
         
      //Adding scene to the stage 
      stage.setScene(scene); 
         
      //Displaying the contents of the stage 
      stage.show(); 
   }


Abbiamo semplicemente creato una istanza vuota di un Rectangle (che ha come variabili di istanza un punto di applicazione (x,y), una width e una height (ma anche altre features, vedi la documentazione della classe nel caso) che, per default, non sono definite. Abbiamo di seguito impostato le variabili di istanza con i vari metodi setter forniti dalla classe, creato un layout con Group passandogli ciò che vogliamo disegnare (Un rectangle in questo caso), poi l'abbiamo aggiunta ad una Scene che ha come grandezza 600 x 300 pixel (Ovviamente il rettangolo deve avere una dimensione minore, altrimenti si finisce con l'hiding (nel caso default) della figura. Successivamente impostiamo la scena di un oggetto Stage che verrà poi visualizzato (Stage vedilo come un oggetto "Interfaccia").

Se vuoi, posso farti capire meglio il concetto passandoti l'implementazione di un semplice oggetto Rectangle implementato da scratch usando Graphics2D. Ma credo che usando JavaFX non ne dovresti aver bisogno.
 
Allora se ricordo bene Java 7 e 8 non ha supporto a moduli ma ha come ultima introduzione quella delle lambda expression. Quindi diciamo che il codice che ti propongo non utilizzerà moduli (che per la cronaca sono inutili in Java, opinione personale).

Iniziamo:

Una classe Rectangle è una classe Java che mantiene all'interno delle istanze i riferimenti geometrici di un rettangolo. Onestamente non capisco chi implementi una classe da scratch per disegnare un rettangolo quando il package di JavaFX fornisce una classe apposita.

Le classi da importare sono:

Java:
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.shape.Rectangle;

Ti spiego brevemente cosa fanno:
  1. Group è una classe che ha la funzione di collezione di componenti grafiche, al suo interno puoi metterci Rectangle, Circle o classi che implementano una funzione basata su Graphics2D per la gestione di componenti grafiche implementate da scratch.
  2. Scene ti identifica un riquadro riempibile di figure, vedila come se fosse il layout di una pagina web
  3. Stage è una classe che identifica il "foglio su cui disegnare", riprendendo nuovamente il contesto web, corrisponde ad una pagina HTML in cui inserire componenti
  4. Rectangle è, come puoi immaginare, un rettangolo drawable.
Ora vediamo come applicare tutte le classi e disegnare un rettangolo.

Java:
public void start(Stage stage) {
      //Drawing a Rectangle
      Rectangle rectangle = new Rectangle();
   
      //Setting the properties of the rectangle
      rectangle.setX(150.0f);
      rectangle.setY(75.0f);
      rectangle.setWidth(300.0f);
      rectangle.setHeight(150.0f);    
       
      //Creating a Group object
      Group root = new Group(rectangle);
       
      //Creating a scene object
      Scene scene = new Scene(root, 600, 300);
   
      //Setting title to the Stage
      stage.setTitle("Drawing a Rectangle");
       
      //Adding scene to the stage
      stage.setScene(scene);
       
      //Displaying the contents of the stage
      stage.show();
   }


Abbiamo semplicemente creato una istanza vuota di un Rectangle (che ha come variabili di istanza un punto di applicazione (x,y), una width e una height (ma anche altre features, vedi la documentazione della classe nel caso) che, per default, non sono definite. Abbiamo di seguito impostato le variabili di istanza con i vari metodi setter forniti dalla classe, creato un layout con Group passandogli ciò che vogliamo disegnare (Un rectangle in questo caso), poi l'abbiamo aggiunta ad una Scene che ha come grandezza 600 x 300 pixel (Ovviamente il rettangolo deve avere una dimensione minore, altrimenti si finisce con l'hiding (nel caso default) della figura. Successivamente impostiamo la scena di un oggetto Stage che verrà poi visualizzato (Stage vedilo come un oggetto "Interfaccia").

Se vuoi, posso farti capire meglio il concetto passandoti l'implementazione di un semplice oggetto Rectangle implementato da scratch usando Graphics2D. Ma credo che usando JavaFX non ne dovresti aver bisogno.
Credo che usare javaFX quando ci si sta appena approcciando al mondo Java sia troppo. Stage,scene, group ca... e mazzi vari, decisamente troppo... Senza considerare che javaFX in genere si usa per programmi con una UserInterface utilizzando MVC. Non so se il ragazzo conosce model view e controller. Quindi lo eviterei (diciamo che non è la prima cosa che impari su java).
Buon Pomeriggio, volevo capire solo come si potesse fare, dato che mi sto approcciando ora alla creazione di oggetti. Ci tengo a precisare che chiedo perché su internet ho trovato solo tutorial obsoleti ed il mio libro di riferimento si basa su java 7 e java 8.
Allora, prendendo direttamente da oracle la spiegazione:
Rectangle()
Constructs a new Rectangle whose upper-left corner is at (0, 0) in the coordinate space, and whose width and height are both zero.
Rectangle(Dimension d)
Constructs a new Rectangle whose top left corner is (0, 0) and whose width and height are specified by the Dimension argument.
Rectangle(int width, int height)
Constructs a new Rectangle whose upper-left corner is at (0, 0) in the coordinate space, and whose width and height are specified by the arguments of the same name.
Rectangle(int x, int y, int width, int height)
Constructs a new Rectangle whose upper-left corner is specified as (x,y) and whose width and height are specified by the arguments of the same name.
Rectangle(Point p)
Constructs a new Rectangle whose upper-left corner is the specified Point, and whose width and height are both zero.
Rectangle(Point p, Dimension d)
Constructs a new Rectangle whose upper-left corner is specified by the Point argument, and whose width and height are specified by the Dimension argument.
Rectangle(Rectangle r)
Constructs a new Rectangle, initialized to match the values of the specified Rectangle.

Ogni classe ha un costruttore standard ovvero Rectangle() (senza parametri).
Poi hai altri mille costruttori da quel che vedo, dipende da come vuoi creare il tuo rettangolo, se dando x e y, o i punti..


Puoi anche fare secondo documentazione:

Rectangle rettangolo = new Rectangle();
rettangolo.setSize(int width, int height);

Enjoy, fatto, così hai il tuo oggetto triangolo. Ovviamente questa è la base con java puro senza framework. Ci sono 30000 modi con java di creare oggetti (in base al framework) tipo con Java spring non c'è bisogno di fare questo perchè puoi inniettarlo(tecnologia molto utilizzata in realtà aziendali: esempio hybris per creazione degli e-commerce).
Puoi iniziare a giocare con questi costruttori e metodi ti metto il link della documentazione tecnica:

 
Credo che usare javaFX quando ci si sta appena approcciando al mondo Java sia troppo. Stage,scene, group ca... e mazzi vari, decisamente troppo... Senza considerare che javaFX in genere si usa per programmi con una UserInterface utilizzando MVC. Non so se il ragazzo conosce model view e controller. Quindi lo eviterei (diciamo che non è la prima cosa che impari su java).

Allora, prendendo direttamente da oracle la spiegazione:
Rectangle()
Constructs a new Rectangle whose upper-left corner is at (0, 0) in the coordinate space, and whose width and height are both zero.
Rectangle(Dimension d)
Constructs a new Rectangle whose top left corner is (0, 0) and whose width and height are specified by the Dimension argument.
Rectangle(int width, int height)
Constructs a new Rectangle whose upper-left corner is at (0, 0) in the coordinate space, and whose width and height are specified by the arguments of the same name.
Rectangle(int x, int y, int width, int height)
Constructs a new Rectangle whose upper-left corner is specified as (x,y) and whose width and height are specified by the arguments of the same name.
Rectangle(Point p)
Constructs a new Rectangle whose upper-left corner is the specified Point, and whose width and height are both zero.
Rectangle(Point p, Dimension d)
Constructs a new Rectangle whose upper-left corner is specified by the Point argument, and whose width and height are specified by the Dimension argument.
Rectangle(Rectangle r)
Constructs a new Rectangle, initialized to match the values of the specified Rectangle.

Ogni classe ha un costruttore standard ovvero Rectangle() (senza parametri).
Poi hai altri mille costruttori da quel che vedo, dipende da come vuoi creare il tuo rettangolo, se dando x e y, o i punti..


Puoi anche fare secondo documentazione:

Rectangle rettangolo = new Rectangle();
rettangolo.setSize(int width, int height);

Enjoy, fatto, così hai il tuo oggetto triangolo. Ovviamente questa è la base con java puro senza framework. Ci sono 30000 modi con java di creare oggetti (in base al framework) tipo con Java spring non c'è bisogno di fare questo perchè puoi inniettarlo(tecnologia molto utilizzata in realtà aziendali: esempio hybris per creazione degli e-commerce).
Puoi iniziare a giocare con questi costruttori e metodi ti metto il link della documentazione tecnica:

Hai ragione, non avevo letto che si riferisse ad un primo approccio con Java, pensavo che gli servisse per altri scopi rispetto a quell accademici. Allora in quel caso conviene farla da scratch con Graphics2D o metodi simili
 
  • Mi piace
Reazioni: __Othon__