JavaFX HBox cache item
Comment puis-je cacher un article dans HBox, et mis l'espace utilisé par cet article à la disposition d'autres articles.
TitledPane legendPane = new TitledPane("Legend", _legend);
legendPane.setVisible(false);
LineChart chart = new LineChart<Number, Number>(_xAxis, _yAxis);
HBox hbox = new HBox(5);
hbox.getChildren().addAll(legendPane, chart);
dans le code ci-dessus, je veux que le noeud graphique utilise tout l'espace disponible lorsque le volet de légende est caché.
28
demandé sur
José
2012-08-30 19:17:40
2 réponses
avant d'appeler legendPane.setVisible, composez le:
legendPane.managedProperty().bind(legendPane.visibleProperty());
noeud.géré la propriété empêche un noeud d'une scène d'affecter la disposition des autres noeuds de la scène.
59
répondu
jewelsea
2012-08-30 16:29:52
Vous pouvez retirer temporairement de la scène:
legendPane.visibleProperty().addListener(new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
if (newValue) {
hbox.getChildren().add(legendPane);
} else {
hbox.getChildren().remove(legendPane);
}
}
});
Ou de manipuler sa taille:
legendPane.visibleProperty().addListener(new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
if (newValue) {
legendPane.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE);
legendPane.setPrefSize(prefWidth, prefHeight);
} else {
legendPane.setMaxSize(0, 0);
legendPane.setMinSize(0, 0);
}
}
});
7
répondu
Uluk Biy
2012-08-30 15:57:47