JavaFX 1: связывание и модификаторы доступа var - PullRequest
2 голосов
/ 24 мая 2009
 var width = 400;
 var height = 400;

Stage {
    style: StageStyle.TRANSPARENT

    onClose: function():Void {
       System.exit(0);
    }

    scene: Scene {
        content: Scribble {}
        width: width
        height: bind height
    }
}

Почему ширина работает, а высота нет? И что я могу сделать, чтобы это исправить? Netbeans говорит:

высота имеет только сценарий (по умолчанию) доступ к привязке в javafx.scene.Scene

Ответы [ 3 ]

2 голосов
/ 25 мая 2009

Хорошо, я понял:

var width : Number = 400;
var height : Number = 400;

var stage:Stage = Stage {
    width: bind width with inverse
    height: bind width with inverse
    scene: Scene {
      content: Scribble {
                 canvasWidth: bind stage.scene.width
                 canvasHeight: bind stage.scene.height
               }
    }
}

Хотя мне не нужно здесь указывать ширину и высоту, потому что я могу получить к ним доступ через переменную stage. Ширина и высота сцены обновляются при изменении ширины и высоты сцены. Я обнаружил, что canvasWidth будет обновляться намного лучше, когда привязан к ширине и высоте сцены, а не к ширине и высоте var (которые обновляются только после завершения изменения размера)

1 голос
/ 27 августа 2009

Если быть более точным, ширина и высота сцены объявляются как public-init. Это означает, что они могут быть установлены только во время инициализации. Привязка к высоте в литерале Scene Object подразумевает, что высота будет обновлена, следовательно, ошибка. Ширина и высота рабочей области объявляются как «публичные», что означает, что они могут быть обновлены.

0 голосов
/ 24 мая 2009

Вы не должны связывать размеры сцены ни с чем. Главным образом потому, что размеры сцены не будут обновляться, когда пользователь пытается изменить размер содержащего окна.

...