Javafx 使用拆分窗格构建边框窗格并最小化要隐藏节点的区域

Javafx 使用拆分窗格构建边框窗格并最小化要隐藏节点的区域,javafx,splitpane,Javafx,Splitpane,我试图构建一个带有拆分窗格的边界窗格,通过拖动鼠标获得一个具有可调整大小区域的边界窗格。我已经写了一些代码,这是工作。但是我不能隐藏分割窗格的区域,如果其中有任何节点 首先,我已经建立了这个阶段,它的工作 public class Example extends Application { StackPane gui; SplitPane splitVertical; SplitPane splitHorizontal; StackPane top;

我试图构建一个带有拆分窗格的边界窗格,通过拖动鼠标获得一个具有可调整大小区域的边界窗格。我已经写了一些代码,这是工作。但是我不能隐藏分割窗格的区域,如果其中有任何节点

首先,我已经建立了这个阶段,它的工作

public class Example extends Application {

    StackPane gui;
    SplitPane splitVertical;
    SplitPane splitHorizontal;

    StackPane top;
    StackPane left;
    StackPane center;
    StackPane right;
    StackPane bottom;

    @Override
    public void start(Stage stage) throws Exception {
        splitVertical = new SplitPane();
        splitVertical.setOrientation(Orientation.VERTICAL);
        splitVertical.setDividerPosition(0, 0.25);
        splitVertical.setDividerPosition(1, 0.75);
        splitVertical.setDividerPosition(2, 1.00);

        splitHorizontal = new SplitPane();
        splitHorizontal.setOrientation(Orientation.HORIZONTAL);
        splitHorizontal.setDividerPosition(0, 0.25);
        splitHorizontal.setDividerPosition(1, 0.75);
        splitHorizontal.setDividerPosition(2, 1.00);

        top = new StackPane();
        left = new StackPane();
        center = new StackPane();
        right = new StackPane();
        bottom = new StackPane();

        splitVertical.getItems().add(top);
        splitVertical.getItems().add(splitHorizontal);
        splitHorizontal.getItems().add(left);
        splitHorizontal.getItems().add(center);
        splitHorizontal.getItems().add(right);
        splitVertical.getItems().add(bottom);

        gui = new StackPane(splitVertical);
        Scene scene = new Scene(gui, 400, 300);
        stage.setScene(scene);
        stage.show();
    }

    public static void main(String[] args) {
        launch(args);
}
这段代码运行良好。我有一个包含所有区域的“边界窗格”

我可以根据需要调整区域大小并完全隐藏它们,如果我愿意的话

但是如果区域内有任何节点,我无法隐藏区域。我可以最小化它们,直到节点被接受为止。这里有一个例子

public class Example extends Application {

    StackPane gui;
    SplitPane splitVertical;
    SplitPane splitHorizontal;

    StackPane top;
    StackPane left;
    StackPane center;
    StackPane right;
    StackPane bottom;

    Button buttonTop;
    Button buttonLeft;
    Button buttonCenter;
    Button buttonRight;
    Button buttonBottom;

    @Override
    public void start(Stage stage) throws Exception {
        splitVertical = new SplitPane();
        splitVertical.setOrientation(Orientation.VERTICAL);
        splitVertical.setDividerPosition(0, 0.25);
        splitVertical.setDividerPosition(1, 0.75);
        splitVertical.setDividerPosition(2, 1.00);

        splitHorizontal = new SplitPane();
        splitHorizontal.setOrientation(Orientation.HORIZONTAL);
        splitHorizontal.setDividerPosition(0, 0.25);
        splitHorizontal.setDividerPosition(1, 0.75);
        splitHorizontal.setDividerPosition(2, 1.00);

        buttonTop = new Button("Top");
        buttonLeft = new Button("Left");
        buttonCenter = new Button("Center");
        buttonRight = new Button("Right");
        buttonBottom = new Button("Bottom");

        top = new StackPane(buttonTop);
        left = new StackPane(buttonLeft);
        center = new StackPane(buttonCenter);
        right = new StackPane(buttonRight);
        bottom = new StackPane(buttonBottom);

        splitVertical.getItems().add(top);
        splitVertical.getItems().add(splitHorizontal);
        splitHorizontal.getItems().add(left);
        splitHorizontal.getItems().add(center);
        splitHorizontal.getItems().add(right);
        splitVertical.getItems().add(bottom);

        gui = new StackPane(splitVertical);
        Scene scene = new Scene(gui, 400, 300);
        stage.setScene(scene);
        stage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}
我有一个边框窗格

但我无法完全隐藏这些区域


是否可以更改区域的大小,直到它们完全隐藏?

我找到了解决方案。childnode的minSize已设置为0。然后一切正常

buttonTop.setMinSize(0, 0);
buttonLeft.setMinSize(0, 0);
buttonCenter.setMinSize(0, 0);
buttonRight.setMinSize(0, 0);
buttonBottom.setMinSize(0, 0);