使用绑定将圆圈居中

时间:2016-01-13 15:09:32

标签: javafx-8

这是一个尝试使用绑定将圆圈居中的程序:

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();

    }

}

以下是程序最初运行时的屏幕:

enter image description here

注意圆圈的圆周只接触顶部,左侧和底部而不是右侧。

以下是程序屏幕最大化然后恢复时的屏幕: enter image description here

这里圆圈的圆周仅接触顶部和底部。

  1. 上面显示的屏幕是正常的吗?
  2. 如何解释该程序的此行为?

0 个答案:

没有答案