这是一个尝试使用绑定将圆圈居中的程序:
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();
}
}
以下是程序最初运行时的屏幕:
注意圆圈的圆周只接触顶部,左侧和底部而不是右侧。
这里圆圈的圆周仅接触顶部和底部。