Die Voreinstellungen von Canvas definieren dieses Darstellungselement als nicht größenveränderlich. Diese Voreinstellung ist für die Anzeige von Bildern zweckmäßig. Sie eignet sich weniger gut für Diagramme und Präsentationsgrafiken, die sich in der Regel der Fenstergröße anpassen sollen.
Das erste Beispiel platziert ein Panel, das mit einer Canvas ausgestattet ist, in der Scene und stellt die Scene ins Hauptfenster ein. In die Canvas wird ein farbig ausgefülltes und umrandetes Rechteck gezeichnet, dessen Größe so gewählt wird, dass es die Canvas fast vollständig ausfüllt. Für die Herstellung des Diagramms wird auf den mit der Canvas bereitgestellten GraphicsContext zurückgegriffen.
So sieht das Fenster aus:
Das Programm für die Herstellung dieses Fensters
package main; import javafx.application.Application; import javafx.geometry.Bounds; import javafx.scene.Scene; import javafx.scene.canvas.Canvas; import javafx.scene.canvas.GraphicsContext; import javafx.scene.layout.Pane; import javafx.scene.paint.Color; import javafx.stage.Stage; /** * Das Beispiel zeigt die Verwendung einer Instanz von Canvas. * Es wird ein umrandetes Rechteck gezeichnet. * Die Instanz von Canvas ist nicht größenveränderlich. * @author */ public class FXGraphicsDemo01 extends Application { @Override public void start(Stage primaryStage) { Canvas c = new Canvas(250, 250); GraphicsContext gc = c.getGraphicsContext2D(); Pane pane = new Pane(c); Scene scene = new Scene(pane, 250, 250); gc.setFill(Color.DARKGOLDENROD); Bounds b = gc.getCanvas().getBoundsInLocal(); gc.fillRect(10, 10, b.getWidth() - 20, b.getHeight() - 20); gc.setStroke(Color.GREEN); gc.setLineWidth(5.0); gc.strokeRect(10, 10, b.getWidth() - 20, b.getHeight() - 20); primaryStage.setTitle("Graphics Demo"); primaryStage.setScene(scene); primaryStage.show(); } }
Wenn du die Größe des Fensters veränderst, wirst du bemerken, dass das umrandete Rechteck unverändert bleibt.
Archivdatei mit diesem Beispiel: FXGraphicsDemo01.zip.