Dies ist eine alte Version des Dokuments!


JavaFX

Canvas, automatische Größenanpassung (resizeable)

Hier ist eine kleine beispielhafte Minianwendung mit einem Canvas, welches sich automatisch der Fenstergröße anpasst:



Das größenveränderliche Canvas:

package com.sowas.javawiki.javafx;

import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.paint.Color;

public class ResizeableCanvas extends Canvas {

    public ResizeableCanvas() {
        widthProperty().addListener(e -> draw());
        heightProperty().addListener(e -> draw());
    }

    @Override
    public boolean isResizable() {
        return true;
    }

    @Override
    public double prefWidth(double height) {
        return getWidth();
    }

    @Override
    public double prefHeight(double width) {
        return getHeight();
    }

    public void draw() {
        double w = getWidth();
        double h = getHeight();
        GraphicsContext gc = getGraphicsContext2D();
        gc.setFill(Color.RED);
        gc.fillRect(0, 0, w, h);
        gc.setFill(Color.YELLOW);
        gc.fillRect(w/4, h/4, w/2, h/2);
    }
}


Eine Minianwendung, welche das resizeable Canvas verwendet:

package com.sowas.javawiki.javafx;
 
import javafx.application.Application;
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;
 
public class MyFxApplication extends Application {
 
   @Override
   public void start(Stage primaryStage) {
      primaryStage.setTitle("JavaFX-Resizeable-Canvas");
 
      Pane pane = new Pane();
      ResizeableCanvas canvas = new ResizeableCanvas();
 
      // Größenänderungen ans Canvas binden:
      canvas.widthProperty().bind(pane.widthProperty());
      canvas.heightProperty().bind(pane.heightProperty());
 
      pane.getChildren().add(canvas);
      Scene scene = new Scene(pane);
 
      primaryStage.setScene(scene);
      primaryStage.show();
   }
 
   public static void main(String[] args) {
      launch(args);
   }
 
}



Stichworte:

JavaFX Canvas mit automatischer Größenanpassung, resizeable canvas, Beispielanwendung, Example

Eigene Werkzeuge
Werkzeuge

gratis Counter by GOWEB
seit 9.10.2007