JavaFX 1: bind, und var Zugriffsmodifikatoren
-
05-09-2019 - |
Frage
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
}
}
Warum funktioniert die Breite der Arbeit, aber die Höhe nicht? Und was kann ich tun, um dieses Problem beheben? Netbeans sagt:
Höhe hat Skript nur (Standard) binden Zugang in javafx.scene.Scene
Lösung
Ok, ich es herausgefunden:
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
}
}
}
Obwohl ich nicht wirklich brauche, um die Breite und Höhe hier angeben, weil ich diese über die Bühne Variable zugreifen kann. Die Szene Breite und Höhe aktualisiert, wenn die Stufenbreite und Höhe verändert. Ich habe festgestellt, dass die canvasWidth wird viel besser aktualisieren, wenn auf die Szene Breite und Höhe und nicht auf die var Breite und Höhe gebunden (die nur aktualisieren, sobald die Größe ändert abgeschlossen ist)
Andere Tipps
auf diese genauer zu sein, die Breite und die Höhe der Szene als „öffentlich-init“ erklärt. Das heißt, sie kann nur bei der Initialisierung festgelegt werden. Die bind auf Höhe in der Szene Objektliteral bedeutet, dass Höhe, den Fehler daher aktualisiert werden. Die Bühne Breite und Höhe sind als „öffentlich“ deklariert dh sie können aktualisiert werden.
Sie sollten nicht die Szene Dimensionen etwas binden. Vor allem, weil die Szene Dimensionen werden nicht aktualisiert, wenn der Benutzer das Fenster enthält, um die Größe versucht.