/ / JavaFX HBox скрий елемента - java, javafx-2

JavaFX HBox скрие елемента - java, javafx-2

Как мога да скрия елемент в HBox и да направя място, използвано от този елемент, достъпно за други елементи.

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);

В горния код искам диаграмата на възела да използва цялото налично пространство, когато легендата се скрие.

Отговори:

59 за отговор № 1

Преди да извикате legendPane.setVisible, обадете се:

legendPane.managedProperty().bind(legendPane.visibleProperty());

Най- Node.managed property предотвратява възли в сцена от засягане на оформлението на други сцени възли.


7 за отговор № 2

Можете временно да го премахнете от сцената:

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);
}
}
});

Или манипулирайте неговия размер:

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);

}
}
});