Heim  >  Artikel  >  Java  >  Wie ändere ich automatisch die Größe eines JavaFX-Canvas innerhalb eines umschließenden Containers?

Wie ändere ich automatisch die Größe eines JavaFX-Canvas innerhalb eines umschließenden Containers?

Barbara Streisand
Barbara StreisandOriginal
2024-10-30 08:13:27829Durchsuche

How to Automatically Resize a JavaFX Canvas Within an Enclosing Container?

So ändern Sie die Größe einer Leinwand innerhalb eines umschließenden Containers automatisch

Bei der Arbeit mit der Canvas-API und dem AnimationTimer von JavaFX für animierte Hintergründe erfolgt die Aufgabe automatisch Es kann vorkommen, dass die Größe der Leinwand geändert wird, wenn sich die Größe der umschließenden Bühne ändert.

Ansatz

Im bereitgestellten Beispielcode wird eine benutzerdefinierte Klasse CanvasPane verwendet. Diese Klasse umschließt eine Instanz von Canvas in einem Pane. Die Methode „layoutChildren()“ wird überschrieben, um sicherzustellen, dass die Abmessungen der Leinwand mit denen des umschließenden Bereichs übereinstimmen.

Einschränkungen bei der Größenänderung

Beachten Sie, dass Canvas für isResizable „false“ zurückgibt ()-Eigenschaft, die angibt, dass die Größe während des Layouts durch das übergeordnete Element nicht geändert werden kann. Pane führt jedoch keine Layout-Vorgänge durch, die über die Größenänderung von untergeordneten Elementen auf ihre bevorzugten Größen hinausgehen. Daher wird die anfängliche Größe der Leinwand durch ihre Breiten- und Höhenargumente bestimmt.

Hauptunterschiede zum Originalbeispiel

Dieser Ansatz unterscheidet sich von der Verwendung vollständig gesättigter Farben durch die Verwendung von eine Reihe von Farbtönen, die sich mit jedem Animationszyklus drehen. Darüber hinaus veranschaulichen zugehörige Beispiele, wie Steuerelemente über dem animierten Hintergrund platziert werden.

Code-Implementierung

<code class="java">public class Baubles extends Application {

    // ... code omitted ...

    private static class CanvasPane extends Pane {

        // ... code omitted ...

        @Override
        protected void layoutChildren() {
            // ... code omitted ...
            canvas.setWidth(w);
            canvas.setHeight(h);
        }
    }

    // ... code omitted ...
}</code>

Dieser überarbeitete Code enthält die CanvasPane-Klasse und passt die Größe automatisch an Canvas im übergeordneten Container. Wenn die Größe der Bühne geändert wird, passt die Leinwand ihre Größe entsprechend an und sorgt so für eine nahtlose Hintergrundanimation.

Das obige ist der detaillierte Inhalt vonWie ändere ich automatisch die Größe eines JavaFX-Canvas innerhalb eines umschließenden Containers?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn