JavaFX 1: bind, e modificatori di accesso var
-
05-09-2019 - |
Domanda
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
}
}
Perché il lavoro di larghezza, ma l'altezza non è? E, cosa posso fare per risolvere questo problema? Netbeans sta dicendo:
altezza ha scritto solo (default) l'accesso si legano in javafx.scene.Scene
Soluzione
Ok, ho capito:
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
}
}
}
Anche se, non ho davvero bisogno di specificare la larghezza e l'altezza qui, perché posso accedere a questi attraverso la variabile palco. La larghezza e l'altezza scena aggiornamenti quando la larghezza e l'altezza palcoscenico cambia. Ho scoperto che il canvasWidth aggiornerà molto meglio quando si lega alla larghezza e l'altezza scena, piuttosto che la larghezza e l'altezza var (che aggiornare solo una volta che il ridimensionamento è completo)
Altri suggerimenti
Per essere più precisi su questo, larghezza e l'altezza della scena sono dichiarati come "pubblico-init". Questo significa che possono essere impostate solo in fase di inizializzazione. Il legato sulla altezza in oggetto scena letterale implica che l'altezza sarà aggiornato, da qui l'errore. larghezza e l'altezza dello stage vengono dichiarati come "pubblico" nel senso che possono essere aggiornati.
Non si dovrebbe vincolare le dimensioni di scena a nulla. Soprattutto perché le dimensioni della scena non saranno aggiornati quando l'utente tenta di ridimensionare la finestra che contiene.