Используя привязку к центру круга
Вот программа, которая пытается центрировать круг, используя привязку:
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();
}
}
Вот экран, когда программа изначально запускается:
обратите внимание, что окружность круга касается только верхней, левой и нижней сторон, а не правой стороны.
Вот экран, когда экран для программы развернут и развернут:
Здесь окружность круга касается только верхней и нижней сторон.
- показанные выше экраны нормальные?
- Как мне объяснить это поведение для этой программы?