JavaFX的HBox中隐藏项目(JavaFX HBox hide item)

2019-06-27 14:25发布

如何隐藏在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);

在上面的代码中,我希望图表节点使用所有可用空间时图例窗格是隐藏的。

Answer 1:

调用legendPane.setVisible之前,请致电:

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

所述Node.managed特性防止一个节点在一个场景影响其他场景节点的布局。



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

        }
    }
});


文章来源: JavaFX HBox hide item
标签: java javafx-2