Javafx文本属性绑定

时间:2015-08-17 08:07:40

标签: text binding properties javafx bind

我正在努力绑定一些文本指定的坐标,这样当我调整窗口大小时,文本就会紧随其后。这是我的代码部分:

if (extras.getString("bigview") != null) {
    boolean bigview = Boolean.parseBoolean(extras.getString("bigview"));
    if (bigview) {
        mBuilder.setStyle(new NotificationCompat.BigTextStyle().bigText(message));
    }
}

解释:petrolStations是一个坐标数组,用于在页面上放置一个字母1.

这是当前输出,因为你可以看到所有的1都在中间组合而不是在指定的坐标中。

enter image description here

编辑: 我已将1改为圆圈并设法扩大尺寸,但我仍然遇到同样的问题,因为所有坐标都在100以下它们位于左上角,我需要它们包含整个窗口并展开和分离为窗口调整得更大。

for (int i = 0; i < petrolStations.size() / 2; i++) {
    int j = i + 1;
    Text text1 = new Text(petrolStations.get(i), petrolStations.get(j), "1");
    text1.setFont(Font.font("Courier", FontWeight.BOLD, FontPosture.ITALIC, 10));
    text1.xProperty().bind(pane.widthProperty().divide(2));
    text1.yProperty().bind(pane.heightProperty().divide(2));
    pane.getChildren().add(text1);

http://i.imgur.com/JkV3LiW.png

1 个答案:

答案 0 :(得分:0)

为什么不考虑x和y相对于宽度/高度的比例?看看这个:

    Pane pane = new Pane();
    Text text = new Text(250,250,"1");
    pane.getChildren().add(text);

    double width = 150;
    double height = 150;
    Scene scene = new Scene(pane, width, height);

    double x = 50; 
    double y = 50;

    double xRatio = x / width; //GET THE RATIO
    double yRatio = y / width; //GET THE RATIO

    text.xProperty().bind(pane.widthProperty().multiply(xRatio));
    text.yProperty().bind(pane.heightProperty().multiply(yRatio));

    stage.setTitle("Hello World!");
    stage.setScene(scene);
    stage.show();

当我运行此代码时,初始状态为:

enter image description here

调整大小后:

enter image description here