Redimensionner automatiquement le canevas pour l'adapter au parent englobant
Le redimensionnement d'un canevas pour qu'il corresponde aux dimensions de son parent englobant est essentiel pour les interfaces utilisateur dynamiques. JavaFX propose plusieurs approches pour y parvenir, dont l'une consiste à utiliser une classe imbriquée qui remplace la méthode layoutChildren().
Approche utilisant CanvasPane
La classe CanvasPane est une Volet personnalisé qui enveloppe un canevas et garantit que les dimensions du canevas correspondent toujours à la taille du volet englobant. Créez une instance de CanvasPane, en passant les dimensions initiales du Canvas souhaitées comme arguments. En remplaçant la méthode layoutChildren(), l'algorithme de mise en page de CanvasPane ajuste automatiquement la position et la taille du canevas pour remplir l'espace disponible.
Exemple de code
<code class="java">public class CanvasPane extends Pane { private final Canvas canvas; public CanvasPane(double width, double height) { canvas = new Canvas(width, height); getChildren().add(canvas); } public Canvas getCanvas() { return canvas; } @Override protected void layoutChildren() { super.layoutChildren(); // Retrieve the enclosing Pane's dimensions after layout calculations double x = snappedLeftInset(); double y = snappedTopInset(); double w = snapSize(getWidth()) - x - snappedRightInset(); double h = snapSize(getHeight()) - y - snappedBottomInset(); // Update the Canvas's layout and dimensions canvas.setLayoutX(x); canvas.setLayoutY(y); canvas.setWidth(w); canvas.setHeight(h); } }</code>
Liaison au parent
Dans l'extrait de code fourni, le Canvas est ajouté à un CanvasPane, qui est ensuite ajouté à une scène. Le CanvasPane est lié aux dimensions de la scène à l'aide de la liaison CSS3, garantissant ainsi que le canevas remplit toujours l'espace disponible de la scène.
Utilisation des fonctions Snap de Java 9
Le JavaFX fourni Le code 8 inclut les méthodes obsolètes snapSize() et isResizing(). Dans Java 9 et versions ultérieures, utilisez snapSizeX() et snapSizeY() pour récupérer les tailles préférées et exploiter bind(Observable[]) pour obtenir des fonctionnalités similaires.
En employant cette approche, votre canevas se redimensionnera automatiquement pour correspondre les dimensions du nœud parent, offrant une interface utilisateur plus réactive et flexible.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!