Используя привязку к центру круга

Вот программа, которая пытается центрировать круг, используя привязку:

import javafx.application.Application;
import javafx.beans.binding.Bindings;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;

/**
 *
 * @author 
 */
public class Test extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage stage) throws Exception {

        Circle c = new Circle();
        Group root = new Group(c);
        Scene scene = new Scene(root, 100, 100);
        c.centerXProperty().bind(scene.widthProperty().divide(2));
        c.centerYProperty().bind(scene.heightProperty().divide(2));
        c.radiusProperty().bind(Bindings.min(scene.widthProperty(),
                scene.heightProperty())
                .divide(2));
        c.radiusProperty().addListener((obs, old, nw) -> {
            System.out.println(" oldRadius = "+old + ", newRadius = "+nw );
        });
        stage.setTitle("Binding in JavaFX");
        stage.setScene(scene);
        stage.sizeToScene();
        stage.show();

    }

}

Вот экран, когда программа изначально запускается:

обратите внимание, что окружность круга касается только верхней, левой и нижней сторон, а не правой стороны.

Вот экран, когда экран для программы развернут и развернут:

Здесь окружность круга касается только верхней и нижней сторон.

  1. показанные выше экраны нормальные?
  2. Как мне объяснить это поведение для этой программы?

0 ответов

Другие вопросы по тегам