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:
- 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.
- Scene ti identifica un riquadro riempibile di figure, vedila come se fosse il layout di una pagina web
- Stage è una classe che identifica il "foglio su cui disegnare", riprendendo nuovamente il contesto web, corrisponde ad una pagina HTML in cui inserire componenti
- 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.