You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

JavaFX har god støtte for såkalt strukturert 2D-grafikk, hvor en lager grafikk-objekter som streker, rektangler, ovaler osv., som tegner seg selv når det trengs, i stedet for å lage paint-metoder som tegner tilsvarende grafikk direkte.

Grafikk-modellen til JavaFX er basert på en såkalt scene-graph, som er en tre-struktur av objekter som beskriver hva som skal vises på skjermen. Elementene i treet kalles noder, og siden både rene grafiske elementer og interaktive elementer i JavaFX er noder, så står en fritt til å kombinere disse som en vil. Interaktive elementer er i grunnen ikke annet enn grafiske elementer som reagerer på og oppdateres iht. bruker-input.

 

    @Override
    public void start(Stage stage) throws Exception {
        
        BorderPane root = new BorderPane(); // Root of the scene graph
        
        // Add one Text node in each surrounding region
        root.setTop(new Text("top"));
        root.setBottom(new Text("bottom"));
        root.setLeft(new Text("left"));
        root.setRight(new Text("right"));
        
        Pane shapesPane = new Pane();
        shapesPane.setPrefSize(300, 300);
        Line line = new Line(10, 10, 100, 100); // x1, y1, x2, y2
        line.getStrokeDashArray().setAll(10.0d, 10.0d); // dashes
        Rectangle rect = new Rectangle(150, 10, 30, 40); // x, y, w, h
        rect.setFill(Color.BLUE);
        Ellipse ell = new Ellipse(40, 180, 40, 30); // cx, cy, rx, ry
        ell.setStroke(Color.RED);
        ell.setStrokeWidth(5);
        ell.setFill(Color.GREEN);
        Text text = new Text(180, 180, "center");
        List<String> fonts = Font.getFamilies();
        text.setFont(new Font(fonts.get((int) (Math.random() * fonts.size())), 32));
        shapesPane.getChildren().addAll(line, rect, ell, text);
        root.setCenter(shapesPane);
        
        Scene scene = new Scene(root, 500, 500);
    
        stage.setScene(scene);
        stage.setTitle("BorderPaneApplication");
        stage.show();
    }
  • No labels