如何在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);在上面的代码中,当图例窗格被隐藏时,我希望图表节点使用所有可用的空间。
发布于 2012-08-31 00:29:52
在调用legendPane.setVisible之前,请调用:
legendPane.managedProperty().bind(legendPane.visibleProperty());Node.managed属性可防止场景中的节点影响其它场景节点的布局。
发布于 2012-08-30 23:57:48
您可以暂时将其从场景中移除:
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);
}
}
});https://stackoverflow.com/questions/12200195
复制相似问题