Maison > Java > javaDidacticiel > le corps du texte

Comment puis-je redimensionner automatiquement un canevas pour l'adapter à son parent dans JavaFX ?

Mary-Kate Olsen
Libérer: 2024-10-28 16:12:01
original
652 Les gens l'ont consulté

How can I make a Canvas automatically resize to fit its parent in JavaFX?

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!