JavaFX Region vs Pane
Region et Pane sont utilisés pour redimensionner les nœuds enfants redimensionnables à leur taille préférée et ne les repositionnent pas. Ce tutoriel montre la différence entre Region et Pane dans JavaFX.
Région JavaFX
La classe JavaFX Region peut être utilisée comme classe de base pour tous les volets de mise en page JavaFX. Il fournit quelques propriétés partagées par toutes les classes de mise en page JavaFX utilisées pour étendre la région.
Le JavaFX a de nombreuses classes qui sont des sous-classes de Pane, Control, Chart et Axis. Ces quatre classes et toutes les autres sont les sous-classes de la classe Region ; tous auront les mêmes propriétés que Region.
Les propriétés de la Région sont indiquées ci-dessous :
BackgroundContent AreaPaddingBordersMarginRegion Insets
Volet JavaFX
JavaFX Pane est une sous-classe de Region. Le Pane est un conteneur de mise en page qui peut contenir de nombreux autres composants JavaFX pour les mettre en page.
Il ne fournit aucun algorithme de disposition mais affiche les composants qu’il contient sur l’emplacement, ce qui est préférable pour les composants. Le Pane utilise layoutX et layoutY, spécifiés par ses composants enfants, pour déterminer où ils veulent être affichés.
Le Pane hérite de toutes les propriétés de la classe JavaFX Region car il s’agit d’une sous-classe. Ainsi, l’arrière-plan, la zone de contenu, le rembourrage, les bordures, etc. peuvent également être utilisés pour le Pane.
JavaFX Region vs Pane
Region et Pane sont utilisés pour redimensionner les nœuds enfants redimensionnables à leur taille préférée. Ils ne les repositionneront jamais.
- La
Regionest une superclasse qui a des nœuds enfants. LePaneest une sous-classe de la classeRegionavec des nœuds enfants. - La
Regionne permet pas de manipuler les nœuds enfants via l’API publique ; d’autre part,Panelaissera l’API publique manipuler les nœuds enfants. - La méthode
Region.getChildren()est protégée alors quePane.getChildrenn’est pas une méthode protégée. - La
Regionest dédiée aux développeurs de composants ; c’est pourquoi il donne le choix d’autoriser ou non l’utilisateur de l’API à manipuler les enfants commePane,Hbox, etc. D’un autre côté,Panene fournit aucune autorisation de ce type ; Les utilisateurs de l’API peuvent manipuler directement les nœuds enfants.
Essayons des exemples pour Region et Pane.
L’exemple pour Region :
package delftstack;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.layout.Region;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
public class JavaFX_Reigon extends Application {
public void start(Stage Label_Stage) {
String Label_Text = "DelftStack is a resource for everyone interested in programming.";
// Create a Label
Label Demo_Label = new Label(Label_Text);
// wrap the label
Demo_Label.setWrapText(true);
// Set the maximum width of the label
Demo_Label.setMaxWidth(300);
// Set the position of the label
Demo_Label.setTranslateX(30);
Demo_Label.setTranslateY(30);
// Create a Region
Region Label_Root = new Region();
// Add Children to region which will throw an error
Label_Root.getChildren().add(Demo_Label);
// Set the stage
Scene Label_Scene = new Scene(Label_Root, 595, 150, Color.BEIGE);
Label_Stage.setTitle("Region Example");
Label_Stage.setScene(Label_Scene);
Label_Stage.show();
}
public static void main(String args[]) {
launch(args);
}
}
Le code ci-dessus est utilisé pour envelopper le texte dans une étiquette. Comme nous pouvons le voir, nous avons ajouté des nœuds enfants à Region, ce qui est impossible, donc ce code devrait générer une erreur.
Voir la sortie :
Exception in Application start method
java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at javafx.graphics@18.0.1/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:465)
at javafx.graphics@18.0.1/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:364)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1071)
Essayons le même exemple pour Pane, où nous pouvons ajouter des nœuds enfants au volet. Voir exemple :
package delftstack;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.layout.Pane;
import javafx.scene.layout.Region;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
public class JavaFX_Reigon extends Application {
public void start(Stage Label_Stage) {
String Label_Text = "DelftStack is a resource for everyone interested in programming.";
// Create a Label
Label Demo_Label = new Label(Label_Text);
// wrap the label
Demo_Label.setWrapText(true);
// Set the maximum width of the label
Demo_Label.setMaxWidth(300);
// Set the position of the label
Demo_Label.setTranslateX(30);
Demo_Label.setTranslateY(30);
// Create a Pane
Pane Label_Root = new Pane();
// Add Children to Pane which will work properly
Label_Root.getChildren().add(Demo_Label);
// Set the stage
Scene Label_Scene = new Scene(Label_Root, 595, 150, Color.BEIGE);
Label_Stage.setTitle("Pane Example");
Label_Stage.setScene(Label_Scene);
Label_Stage.show();
}
public static void main(String args[]) {
launch(args);
}
}
Ce code fonctionnera correctement car nous pouvons ajouter des nœuds enfants au volet. Voir la sortie :

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn Facebook